创建一个默认模型来淘汰赛

时间:2014-03-21 15:29:19

标签: 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")
}

但是当我这样做时:

self.Patient(new self.PatientModel());

我收到此错误:

Uncaught TypeError: Cannot read property 'PatientId' of undefined 

我现在数据为空,但我想要一个像lastname

这样的默认值

我找到http://kostructures.com/ko.Model/,但我需要一个最简单的解决方案

由于

1 个答案:

答案 0 :(得分:1)

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

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")
}