我在页面上有两个值,一个是ko.computed属性,另一个是ko.observable,两个都应该以相同的方式获得相同的值(基本数据使用ko.mapping.fromJS加载):
//#1
self.count = ko.computed(function () {
return self.pages().length;
});
//#2
self.count2 = ko.observable(0);
ko.computed(function () {
//looks like this is not fiering
self.count2(self.pages().length);
});
在我的情况下,#1效果很好,但#2根本无法触发。以同样的方式,如果我会使用self.page.subscribe(),我也会得到理想的结果。
这个问题的第二部分,如果我创建了一些嵌套对象,那么情况#1和#2的工作与嵌套对象的预期一样,但顶级/父对象上仍存在问题。
听到的是展示这种奇怪行为的样本 - http://jsfiddle.net/rrgnK/2/
我想知道是什么导致了这个问题,是我的代码/结构还是其他什么? (没有特别的问题,我试图用这种方式解决,我只是注意到这种奇怪的行为,这让我觉得我可能在做一些从根本上说错误的事情)
答案 0 :(得分:2)
你的第二个.computed
字段没有绑定任何东西,它永远不会被调用。
我没有提议修复,因为那根本不是你应该做的。您的第一个代码模式是获取对从其他属性派生的变量的读访问权的预期方式。