我有以下viewModel(当然减少了):
function viewModel(calendarData) {
var self = this;
if (calendarData != null) {
self.Calendars = ko.observableArray(ko.mapping.fromJS(calendarData));
} else {
self.Calendars = ko.observableArray();
}
}
这是我的json从我的网页api返回:
[{"Id":17,"Name":"try now","Events":[],"UserId":null},
{"Id":19,"Name":"go","Events":[],"UserId":null}]
但是我得到了:
错误:
初始化可观察数组时传递的参数必须是数组,或null或未定义。
我是淘汰赛的新手,所以我会非常感谢我在这里做错了什么。
答案 0 :(得分:3)
ko.mapping.fromJS
函数使对象成为可观察对象。所以ko.mapping.fromJS
返回函数。但是你应该将一个数组传递给ko.observableArray
所以你应该使用:
if (calendarData != null) {
self.Calendars = ko.observableArray(calendarData); // <-------
} else {
self.Calendars = ko.observableArray();
}
或者
if (calendarData != null) {
self.Calendars = ko.mapping.fromJS(calendarData); // <-------
} else {
self.Calendars = ko.observableArray();
}