【问题标题】:How to conditionally notify particular subscriber in knockout.js如何在 knockout.js 中有条件地通知特定订阅者
【发布时间】:2014-06-11 02:55:11
【问题描述】:

我有一个可观察对象,我使用 subscribe() 方法将订阅者附加到该对象。 我如何有条件地让那个订阅者在改变 observable 时得到通知?

意思是,在某些情况下更改可观察对象时我需要调用该订阅者,但也没有。

谢谢

【问题讨论】:

  • 总是调用订阅。只需将条件逻辑放入回调中即可决定是否需要执行任何操作。

标签: knockout.js


【解决方案1】:

就像 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() {
    ...
});

【讨论】:

    猜你喜欢
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    相关资源
    最近更新 更多