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