【问题标题】:knockout adding new properties to already existing view model淘汰赛向现有视图模型添加新属性
【发布时间】:2015-07-27 09:33:42
【问题描述】:

有淘汰模式:

var customMapping = {
    update: function (options) {
        var result = ko.mapping.fromJS(options.data);
            var self = this;
            self.computeTest = ko.computed(function () {
                return "Test" + self.newObs();
            });

        return result;
    }
};

var model = function() 
{
   var self = this;
   self.Test = ko.observable();

   self.init = function() {
       // create ajax call
       // in success do mapping
       ko.mapping.fromJS(data, customMapping, self); //this mapping should update existing model - adding new observables and computed
   }

   ko.applyBindings(self, $("#id")[0]);
}

var m = new model();
m.init();

所以: 1)我有淘汰赛模型。在其中定义了一些函数以及一个可观察对象列表。

2) 在数据来自服务器之前调用 Knocokut 绑定。​​

3) 使用m.init() 加载模型数据。

这应该调用自定义映射并创建新的 observables(基于来自服务器的数据),以及一些计算变量。但是,此自定义绑定不起作用。它不会创建任何新的 observables。我相信这应该是“更新”映射,但我不明白如何在现有模型中扩展

【问题讨论】:

    标签: knockout.js knockout-mapping-plugin


    【解决方案1】:

    鉴于您的代码,实际上可能有一个快捷方式可用:将ko.applyBindings 调用移至init 方法,就在mapping 调用下方。

    如果您需要使用占位符/空/假 Ajax 结果来连接“默认”视图模型。

    【讨论】:

      猜你喜欢
      • 2015-04-05
      • 1970-01-01
      • 2019-11-14
      • 2015-04-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 2014-09-07
      • 1970-01-01
      相关资源
      最近更新 更多