1

我在页面上有两个值,一个是 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/

我想知道是什么导致了这个问题,是我的代码/结构还是其他什么?(我试图以这种方式解决没有特别的问题,我只是注意到这种奇怪的行为,这让我认为我可能在做一些根本错误的事情)

4

1 回答 1

2

你的第二个.computed字段没有绑定任何东西,它永远不会被调用。

我没有建议的修复,因为这根本不是你应该做的。您的第一个 Code Pattern 是获得对从其他属性派生的变量的读取访问权限的预期方式。

于 2013-01-21T15:52:28.810 回答