有没有办法忽略可观察值变化的订阅者。我想更改可观察值的值,但不使用 Knockout.js 为订阅者执行它
通常这是不可能或不可取的,因为它可能会导致依赖链中的事物不同步。使用限制扩展器通常是限制依赖项接收的通知量的好方法。
但是,如果您确实想这样做,那么一种选择是覆盖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");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)