knockout将新属性添加到现有的视图模型中

时间:2015-05-15 12:42:38

标签: knockout.js knockout-mapping-plugin

有一个淘汰模型:

WebApplicationException

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

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

3)使用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(); 加载模型数据。

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

1 个答案:

答案 0 :(得分:1)

鉴于您的代码,实际上可能还有一个可用的快捷方式:将ko.applyBindings来电转移到init方法正下方的mapping方法。

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