我正在尝试在一个页面上包含多个视图模型,我不想将这些与特定的页面ID绑定,就像我知道您能够做的那样,因为我希望能够使用每个模型在页面上不止一次,并将使用with
绑定。
我试图从self.total
VM1
中的self.total
中读取VM2
中VM1.x
的值,但我收到错误消息:< / p>
无法为ko.computed写一个值,除非你指定了一个&#39;写&#39;选项。如果您想阅读当前值,请不要传递任何参数。
从VM2
读取标准var VM1 = function(parent) {
var self = this;
self.costa = 1000;
self.costb = 500;
self.total = ko.computed(function(){
return self.costa + self.costb;
});
};
var VM2 = function(parent) {
var self = this;
self.total = ko.observable(parent.vm1.total);
};
var MasterViewModel = function() {
var self = this;
self.vm1 = new VM1(self);
self.vm2 = new VM2(self);
};
window.masterViewModel = new MasterViewModel();
ko.applyBindings(window.masterViewModel);
变量似乎工作正常,但是当试图获取计算值时,淘汰赛只会抱怨。
JavaScript的:
<div data-bind="with: vm1">
<p data-bind="text: total()"></p>
</div>
<div data-bind="with: vm2">
<p data-bind="text: total()"></p>
</div>
HTML:
--NavBar--
----Parallax header -----
----UIView------
---Tableview-cells----
答案 0 :(得分:0)
解决方案(也由@ haim770指出)是将total作为函数调用: self.total = ko.observable(parent.vm1.total());