有没有办法在可观察值发生变化时忽略订阅者。我想更改 observable 的值,但不使用 knockout.js 为订阅者执行它
最佳答案
通常这是不可能的或不可取的,因为它可能会导致依赖链中的事物不同步。使用节流扩展器通常是限制依赖项接收的通知数量的好方法。
但是,如果您真的想这样做,那么一种选择是覆盖 observable 上的 notifySubscribers
函数并让它检查标志。
这是一个将此功能添加到可观察对象的扩展:
ko.observable.fn.withPausing = function() {
this.notifySubscribers = function() {
if (!this.pauseNotifications) {
ko.subscribable.fn.notifySubscribers.apply(this, arguments);
}
};
this.sneakyUpdate = function(newValue) {
this.pauseNotifications = true;
this(newValue);
this.pauseNotifications = false;
};
return this;
};
您可以将其添加到可观察对象中,例如:
this.name = ko.observable("Bob").withPausing();
然后你可以在没有通知的情况下更新它:
this.name.sneakyUpdate("Ted");
关于javascript - 在 knockout.js 中更改可观察但不通知订阅者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17983118/