有没有一种方法可以忽略可观察值的订户。我想更改一个observable的值,但不希望使用kickout.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");
关于javascript - 可以观察到的变化,但不会在敲门通知中通知订户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17983118/