【问题标题】:Knockout js applybinding淘汰赛js应用绑定
【发布时间】:2012-11-27 22:57:41
【问题描述】:

这里是淘汰赛的新手。

我从获取所有经销商的网络服务中获取 JSON 数据。我想将它绑定到 GUI,然后能够根据所选区域过滤数组,而无需从 Web 服务获取新数据并应用。现在看来,我需要 jquery.getJSON 函数中的过滤功能和 ko.applyBinding 功能(在单独的函数中,而不是在示例中的 page.ready 中)。我不希望这样,因为这意味着每次用户想要过滤数组时,我都必须从 Web 服务获取新数据并运行 applybinding。

这段代码非常简化,但我希望你明白这一点:

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;
    });
}

【问题讨论】:

    标签: javascript knockout.js


    【解决方案1】:

    您不需要每次都调用应用绑定。将您的代码更改为如下所示。

    jQuery.getJSON("URL", function (data) {
        var dealerArray = ko.mapping.fromJS(data);
        // Filter the dealer array here
        Grid_Model.Dealers(filteredArray);
    });
    

    【讨论】:

      猜你喜欢
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      • 2014-03-30
      • 1970-01-01
      • 2014-10-30
      • 2013-02-04
      • 2021-12-02
      相关资源
      最近更新 更多