1

我刚刚注意到,在我连接我的 js 之后,即使我没有绑定包含它们的视图模型,所有敲除计算的 observables 都在所有页面上被评估和调用,这是预期的行为吗?如果是这样,我该如何避免?

4

1 回答 1

2

这是例外行为

默认情况下,计算出的 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 });
}
于 2014-04-05T18:01:51.993 回答