我遇到以下代码崩溃的问题
self.DivisionRuleList.push(div);
我收到以下错误:
Uncaught TypeError: undefined is not a function
列表应该被初始化,因为我在另一个下拉列表中使用相同的列表,即渲染,如果我在控制台中查找它,我可以看到值。
返回的对象正在按原样添加到数组Divisions。
我的代码:
Division = function() {
this.id = ko.observable();
this.name = ko.observable();
this.sex = ko.observable();
this.businessTypeId = ko.observable();
};
function ViewModel() {
var self = this;
self.Division = ko.observable(new Division);
self.Divisions = ko.observableArray();
self.DivisionRuleList = ko.observableArray();
self.submitDivision = function(element) {
var json = ko.mapping.toJSON(self.Division);
$.post("@Url.Action("AddDivision", "BusinessRules")", {
json: json
}).done(function (d) {
var div = ko.mapping.fromJSON(d);
self.Divisions.push(div);
self.DivisionRuleList.push(div);
self.Division(new Division());
})
.fail(function (d) {
alert("FAILED");
});
};
}
内容在div(json)
中重新演绎{
"Id":1042,
"Sex":0,
"SexString":"Herrar",
"Name":"test",
"BusinessTypeString":"Typ1",
"DivisionFullname":"Typ1 Herrar test",
"UserId":2,
"Username":"Testanvändare",
"Timestamp":"2014-07-24T13:40:19.733328+02:00",
"TimestampString":"2014-07-24 13:40",
"BusinessTypeId":1,
"BusinessType":null
}
更新
我在同一视图中使用以下选项列表中的DivisonRuleList:'
<select class="form-control" data-bind="options: ViewModel.DivisionRuleList(),
optionsValue: 'Id',
optionsText: function (item) {
return item.BusinessType.Name() + ' ' + item.SexString() + ' ' + item.Name();
},
value: ViewModel.BusinessRule().divisionId">
</select>
如果我删除它,它工作正常。或许是一条线索?
ViewModel初始化
$(document).ready(function() {
var req = $.ajax("@Url.Action("GetDivisionsNoRule", "BusinessRules")", { cache: false });
ViewModel = new ViewModel();
req.done(function(data) {
ViewModel.DivisionRuleList = ko.mapping.fromJSON(data);
ko.applyBindings(ViewModel);
});
});
答案 0 :(得分:1)
是否定义了BusinessType.Name?猜测BusinessType为null,它包含在ko.observable中,该ko.observable具有未定义的Name属性。