Javascript 创建要淘汰的默认模型

Javascript 创建要淘汰的默认模型,javascript,knockout.js,Javascript,Knockout.js,我正在用knockout JS创建一个新的默认对象 self.PatientModel = function(data) { var self = this; self.PatientId = ko.observable(data.PatientId||0), self.Name = ko.observable(data.Name||""), self.LastName = ko.observable(data.LastName||"Smith") } 但当我这

我正在用knockout JS创建一个新的默认对象

self.PatientModel = function(data) {
    var self = this;
    self.PatientId = ko.observable(data.PatientId||0),
    self.Name = ko.observable(data.Name||""),
    self.LastName = ko.observable(data.LastName||"Smith")
}
但当我这样做的时候:

self.Patient(new self.PatientModel());
我得到这个错误:

Uncaught TypeError: Cannot read property 'PatientId' of undefined 
我现在知道数据为null,但我想要一个类似lastname的默认值

我找到了,但我需要一个最简单的解决方案


谢谢

在尝试访问数据上的属性之前,您应该确保数据至少包含某些内容。你可以这样解决:

self.PatientModel = function(data) {
    data = data || {PatientId: 0, Name: "", LastName: "Smith"}
    var self = this;
    self.PatientId = ko.observable(data.PatientId);
    self.Name = ko.observable(data.Name);
    self.LastName = ko.observable(data.LastName);
}
或另一种解决方案,接近您所拥有的:

self.PatientModel = function(data) {
    data = data || {};
    var self = this;
    self.PatientId = ko.observable(data.PatientId||0),
    self.Name = ko.observable(data.Name||""),
    self.LastName = ko.observable(data.LastName||"Smith")
}

您只需添加
data=data | |{}就在你的内心深处,太棒了!谢谢,很简单,我累了…没问题。如果答案对你有帮助,请不要忘记投票/接受