【发布时间】:2019-03-29 14:57:14
【问题描述】:
我有一个绑定到 UI 元素的可观察 A。 我还有一个取决于 A 的计算 B。 我有一个取决于 A 和 B 的计算 С。 我订阅了 C
当 UI 元素中的值发生变化时,计算会被计算两次,订阅会被调用两次。
我认为原因是 A 有两个订阅:
A: [B, C]
Knockout 通知 B 关于 A 的变化。
在评估 B 后,它会通知 C 关于 B 的变化
然后它回到开始并调用 A 的第二个订阅,即 C。
这里我们有两个对 C 的调用。
有没有办法防止这种情况发生?
var viewModel = {
firstName: ko.observable("Andrew"),
lastName: ko.observable("King"),
};
viewModel.fullName = ko.computed(function() {
return viewModel.firstName() + " " + viewModel.lastName();
});
viewModel.user = ko.computed(function() {
return {
fullName: viewModel.fullName(),
lastName: viewModel.lastName()
};
});
viewModel.user.subscribe(function() {
// This is called once if I change first name
// It is called twice if I change last name
});
【问题讨论】:
标签: knockout.js