【发布时间】:2018-08-02 18:21:31
【问题描述】:
我正在尝试从我的服务器获取一些数据,根据这些数据创建对象,然后将其显示在我的页面上的 foreach 数据绑定中。
这是我的代码:
self.houses = ko.observableArray([]);
self.flats = ko.observableArray([]);
function Building(item, checked){
self = this;
self.id = item.id;
self.name = item.nazwa;
self.photo = '/' + item.pic;
self.type = item.type_text;
self.selected = ko.observable(checked);
}
$.getJSON("/api/getHouses", function(allData) {
self.houses($.map(allData, function(item) { return new Building(item, 0) }));
});
$.getJSON("/api/getFlats", function(allData) {
self.flats($.map(allData, function(item) { return new Building(item, 0) }));
});
当我运行这段代码时,我得到一个错误:
self.flats is not a function
如果我要删除其中一个 getJSON 函数,并且只有一个(其中一个),它工作正常。我一次只能有一个 observableArray 吗?
【问题讨论】:
-
没有理由不能拥有多个 observableArray。我猜想某处存在范围界定问题。你能展示你的完整视图模型吗?
-
@JasonSke 代码相当多。范围界定是什么意思?这一切都在一个视图模型中。有问题吗?
-
范围界定是指“自我”的上下文。如果您有多个自变量,则它可能不是您在引发错误时所期望的。 ajax 调用是从函数内执行的,还是真的像上面那样在根视图模型中执行?
-
@JasonSake 它在根视图模型中。只有 1 个自我。
-
@JasonSke 成功了。如果您将其添加为答案,我会接受。干杯!
标签: knockout.js knockout-2.0 knockout-3.0