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