Javascript 不创建视图对象-如何创建视图对象?

Javascript 不创建视图对象-如何创建视图对象?,javascript,Javascript,我正在做一个叫做OpenEMR的项目。 我被要求向JS Knockout加载的页面添加一些数据。我正在学习这个JS淘汰赛,因为我通过这个练习 问题是在添加新对象之后 function patient_data_view_model(pname,pid,pubpid,str_dob,regdate) { var self=this; self.pname=ko.observable(pname); self.pid=ko.observable(pid); self.

我正在做一个叫做OpenEMR的项目。 我被要求向JS Knockout加载的页面添加一些数据。我正在学习这个JS淘汰赛,因为我通过这个练习

问题是在添加新对象之后

function patient_data_view_model(pname,pid,pubpid,str_dob,regdate)
{
    var self=this;
    self.pname=ko.observable(pname);
    self.pid=ko.observable(pid);
    self.pubpid=ko.observable(pubpid);
    self.str_dob=ko.observable(str_dob);
    self.regdate=ko.observable(regdate);  //new object
我按照原作者设定的模式将其添加到所有位置。 我在浏览器中安装了一个js knockout插件,以便在数据没有显示在屏幕上时帮助解决问题。是的,此服务器正在加载数据

    function setMyPatient() {
            parent.left_nav.setPatient("Hung Chow (she)",66499, " | MRN: 66499",''," DOB: 01\/08\/1996 | Age: 25 | Gender ID \"F\" | ",''," Reg Date: 03\/09\/2021");
正如您在屏幕截图中所看到的,没有创建redate

我的问题是,是什么创建了右侧的pname函数之类的对象?显然,这不仅仅是增加可观测的ko的事实

另一个更新的地方是这里

left_nav.setPatient = function(pname, pid, pubpid, frname, str_dob, regdate)
{
    if((app_view_model.application_data.patient()!==null) && (pid===app_view_model.application_data.patient().pid()))
    {
        app_view_model.application_data.patient().pname(pname);
        app_view_model.application_data.patient().pubpid(pubpid);
        app_view_model.application_data.patient().str_dob(str_dob);
        app_view_model.application_data.patient().regdate(regdate);

        return;
    }
此函数似乎是将数据应用于视图的点

谢谢

如果我理解正确(我在这里做一些假设,因为您遗漏了一些相关信息):


  • 有一个患者对象存储在
    app\u view\u model.application\u data.patient
    中(包装在可观察对象中)
  • 这些患者对象有一个构造函数,名为
    patient\u data\u view\u model
  • 您将参数
    regdate
    添加到此构造函数中,该构造函数将额外属性
    regdate
    添加到它创建的患者对象中

  • 有一个函数
    left\u nav.setPatient
    ,它获取一些值并覆盖当前存储在
    app\u view\u model.application\u data.patient中的患者的当前值
  • 问题:新创建的患者对象不包含此新属性
    regdate
  • 好的,您遗漏的相关信息是这个患者对象的实际创建位置。我希望在某个地方发生以下事情:


    app_view_model.application_data.patient=ko.observable(新患者_data_view_model('abc',123456','def',01-02-2021');
    
    如果以这种方式创建,它确实应该包含新的
    regdate
    字段。如果以任何其他方式创建,则所有赌注都将被取消


    顺便说一下,如果调用此
    setPatient
    函数而不存在
    regdate
    字段,则会出现类似“regdate不是函数”的错误.

    请确保您的样本数据不是真实的患者数据洪周不是真实的患者或真实的人。第38行var new_patient=新患者数据视图模型(pname、pid、pubpid、str_dob、regdate);app_view_model.application_data.patient(新患者);