我正在与他们的样本一起敲除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/

10-11 12:50