我正在与他们的样本一起敲除ockoutjs,并且已经对其原始代码进行了编辑,如下所示。将fullName属性分配为dependentObservable,并且此方法明确知道fullName方法中的哪个依赖项,因此fullName方法仅在依赖项更改时起作用。
如果我从fullName方法中删除this.LastName(),那么更改lastName属性不会导致调用fullName方法。
我不知道这是怎么回事。
var viewModel = {
firstName: ko.observable("Bert"),
lastName: ko.observable("Bertington")
};
viewModel.fullName = ko.dependentObservable(function() {
alert('worked');
return this.firstName() + " "+ this.lastName() ;
}, viewModel);
// Activates knockout.js
ko.applyBindings(viewModel);
最佳答案
在Knockout中有一个依赖项跟踪机制,用于评估dependentObservables。关键在于访问可观察对象必须通过一个函数(必须调用this.firstName()
)。除了返回firstName之外,Knockout还将dependentObservable作为订户添加到firstName
。当firstName
更新时(必须再次通过该功能),然后将通知所有订户。
此外,每次对dependentObservable进行评估时,都会重新评估这些依赖关系,因此对于一个dependentObservable,依赖关系实际上会随时间而变化。
关于javascript - ko.dependentObservable这个方法如何聪明地理解依赖关系?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8495375/