我有一个带有一些可观察对象的 ViewModel 和一个仅在应用绑定后才知道的属性。
例如,我的 UI 包含一个搜索框,它在下方显示匹配项。最初,视图模型内的匹配属性为空,因为没有要附加的数据。但是,一旦搜索框至少包含 3 个字符,它就会进行 AJAX 调用并获取数据。
当我调用映射插件时,将调用中的数据映射到 KO 时,好像 KO 无法后期绑定可观察数组。问题是我没有任何东西可以给它映射以首先设置绑定。
我的代码:
var vm = new function () {
var self = this;
self.customers = null;
self.searchText = ko.observable("");
self.searchText.subscribe(function (data) {
if (data.length > 2) {
// do search
$.get("/customers/getall", { searchTerms: self.searchText }, function (resp) {
if (!self.customers) {
// first mapping
self.customers= ko.mapping.fromJS(resp.customers);
} else {
ko.mapping.fromJS(self.customers, resp.customers);
}
});
}
});
}
ko.applyBindings(vm, $("#searchCustomersScope")[0]);