我正在尝试使用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);