多个可观察数组
Multiple Observable Arrays
我正在尝试从我的服务器获取一些数据,根据这些数据创建对象,然后在我的页面上的 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 吗?
看起来问题是 "self" 变量正在被 Building 函数改变,并且在 ajax 调用 returns 时不再指向根视图模型。修复可能就像将 "var" 放在 self = this
前面一样简单
self.houses = ko.observableArray([]);
self.flats = ko.observableArray([]);
function Building(item, checked){
//self = this;
var self = this; //the fix
self.id = item.id;
self.name = item.nazwa;
self.photo = '/' + item.pic;
self.type = item.type_text;
self.selected = ko.observable(checked);
}
我正在尝试从我的服务器获取一些数据,根据这些数据创建对象,然后在我的页面上的 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 吗?
看起来问题是 "self" 变量正在被 Building 函数改变,并且在 ajax 调用 returns 时不再指向根视图模型。修复可能就像将 "var" 放在 self = this
self.houses = ko.observableArray([]);
self.flats = ko.observableArray([]);
function Building(item, checked){
//self = this;
var self = this; //the fix
self.id = item.id;
self.name = item.nazwa;
self.photo = '/' + item.pic;
self.type = item.type_text;
self.selected = ko.observable(checked);
}