我正在尝试将一些数据推送到KO可观察数组。我从我的AJAX调用中获取数据,并且在脚本执行时没有出现任何错误。但是,如果我尝试访问userNames
,我会得到一个空数组。我在这里缺少什么?
UserHandler = (function () {
var userName = function (data) {
this.Name = data;
};
var userNames = ko.observableArray([]);
var getUserNames = function () {
userNames([]);
$.ajax({
url: "Users/All",
dataType: "json",
success: function (data) {
ko.utils.arrayPushAll(userNames, $.map(data, function (entry) {
return new userName(entry);
}));
}
});
};;
return {
UserNames: userNames,
GetUserNames: getUserNames,
};
});
console.log(UserHandler().UserNames());
--> []
答案 0 :(得分:0)
淘汰赛中的可观察阵列很棘手,有时难以理解。我可以这样做:
ko.utils.arrayPushAll(userNames(), $.map(data, function (entry) {
return new userName(entry);
}));
userNames.valueHasMutated();
或只是
userNames($.map(data, function (entry) {
return new userName(entry);
}));
在第一个解决方案中,您添加括号以获取可观察的原始值,然后您操纵它并通知所有订阅者值已更改。 在第二个解决方案中,您只需提供observableArray的新值。