我正在尝试使用pubsub消息传递来通知viewmodel关于observablearray所做的更改。
viewModel1具有observableArray1 viewMOdel2还使用了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)
答案 0 :(得分:2)
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);