在这里淘汰赛很新。
我从获取所有经销商的网络服务中获取 JSON 数据。我想将它绑定到 GUI,然后能够根据所选区域过滤数组,而无需从 Web 服务获取新数据并应用。现在看来,我需要 jquery.getJSON 函数中的过滤和 ko.applyBinding 功能(在单独的函数中,而不是在示例中的 page.ready 中)。我不希望这样,因为这意味着我必须从 Web 服务获取新数据并在每次用户想要过滤数组时运行应用绑定。
这段代码非常简化,但我希望你明白这一点:
function GridModel() {
var self = this;
self.Dealers = ko.observableArray();
}
var Grid_Model;
$(document).ready(function () {
Grid_Model = new GridModel();
ko.applyBindings(Grid_Model); // If this line is here, no data is bound to the GUI at all
jQuery.getJSON("URL", function (data) {
Grid_Model.Dealers = ko.mapping.fromJS(data);
// If I put the filter functionality here, it works
// If I put ko.applyBindings(Grid_Model); here, it works.
});
});
function filterDealers(string region) {
Grid_Model.Dealers = ko.utils.arrayFilter(Grid_Model.Dealers(), function(dealer) {
return dealer.RegionName() == region;
});
}