【发布时间】:2014-06-11 02:55:11
【问题描述】:
我有一个可观察对象,我使用 subscribe() 方法将订阅者附加到该对象。 我如何有条件地让那个订阅者在改变 observable 时得到通知?
意思是,在某些情况下更改可观察对象时我需要调用该订阅者,但也没有。
谢谢
【问题讨论】:
-
总是调用订阅。只需将条件逻辑放入回调中即可决定是否需要执行任何操作。
标签: knockout.js
我有一个可观察对象,我使用 subscribe() 方法将订阅者附加到该对象。 我如何有条件地让那个订阅者在改变 observable 时得到通知?
意思是,在某些情况下更改可观察对象时我需要调用该订阅者,但也没有。
谢谢
【问题讨论】:
标签: knockout.js
就像 Patrick Steele 所说的,当你改变一个 observable 的值时,总是会调用 subscribe。如果您不想通知特定订阅者,则应检查订阅者中的条件。
如果你想在不通知任何订阅者的情况下更新 observable,可以查看Change observable but don't notify subscribers in knockout.js;在这里你会发现一个可观察的扩展,它允许以下内容:
this.name.sneakyUpdate("Ted");
另一种解决方案是创建一个包含您要检查的条件的计算,然后订阅该计算。例如,如果您只想在 observable 的值高于 5 时通知订阅者,您可以执行以下操作:
self.myObservableIsHigherThan5 = ko.computed(function() {
return self.yourObservable() > 5;
};
self.myObservableIsHigherThan5.subscribe(function() {
...
});
【讨论】: