Knockout在连接时计算所有页面的评估

时间:2014-04-05 17:39:26

标签: javascript knockout.js computed-observable

我刚注意到,在我连接了我的js后,即使我没有绑定包含它们的视图模型,所有敲除计算的可观察对象都会被评估并在所有页面上调用,是这是预期的行为吗?如果是这样我怎么能避免呢?

1 个答案:

答案 0 :(得分:2)

这是例外的behavior

  

默认情况下,计算的observable在创建过程中会立即确定其值。

如果您想更改此设置,则需要将deferEvaluation设置为true:

  

然后在实际尝试访问其值或手动订阅它之前,不会计算计算的observable的值。

所以你的计算结果应如下所示:

function AppViewModel() {
    this.firstName = ko.observable('Bob');
    this.lastName = ko.observable('Smith');

    this.fullName = ko.computed(function() {
        return this.firstName() + " " + this.lastName();
    }, this, { deferEvaluation: true });
}