knockoutjs observablearray pubsub how to?



我正在尝试使用pubsub消息传递通知ViewModel有关ObservableArearRay的更改。

ViewModel1有ObservableArray1ViewModel2还使用observablearray2

我正在使用它来广播更改:

this.observableArray1.subscribe(function (newValue) {
            this.observableArray1().push(newValue);
            pubsub.notifySubscribers(newValue, "observableArray1");
        },
            this);

另一侧:

postbox.subscribe(function (newValue) {
            this.observableArray1().(newValue);
        },
            this,
            "observableArray1");

我遇到了这个错误:

Uncaught TypeError: Converting circular structure to JSON
    at JSON.stringify (<anonymous>)
    at Object.Gb (knockout-3.4.2.js:22)
    at Object.a.toJSON (knockout-3.4.2.js:56)
    at text (eval at parseBindingsString (knockout-3.4.2.js:68), <anonymous>:3:67)
    at update (knockout-3.4.2.js:99)
    at function.a.B.i (knockout-3.4.2.js:73)
    at Function.Uc (knockout-3.4.2.js:52)
    at Function.Vc (knockout-3.4.2.js:51)
    at Function.U (knockout-3.4.2.js:51)
    at Function.ec (knockout-3.4.2.js:50)
this.observableArray1.subscribe(function (newValue) {
            this.observableArray1().push(newValue);
            pubsub.notifySubscribers(newValue, "observableArray1");
        },
            this);

将newValue添加到observablearray1会导致订阅再次调用,从而再次添加了该值,从而使订阅再次被称为订阅,从而创建一个无尽的循环,因此圆形结构误差。无需将NewValue添加到订阅中可观察的数组,因为它已经存在。

this.observableArray1.subscribe(function (newValue) {
            pubsub.notifySubscribers(newValue, "observableArray1");
        },
            this);

最新更新