2013-12-15 61 views
2

我正在使用BackFire的Backbone.Firebase.Collection。我有一個用於更新模型的輸入字段的偵聽器。該值被驗證,那麼該模型通過Firebase.update失敗:第一個參數包含循環對象值

this.model.save({'title': val});

更新雖然數據並在火力地堡結束(通過僞造選中)得到更新,我得到控制檯以下錯誤:

Uncaught TypeError: Firebase.update failed: First argument contains a cyclic object value (collection.models.0.collection.models.0.collection.models.0.collection.models.0.collection.models.0.collection.models.0.collection.models.0.collection.models.0.collection.models...)

如果我將Firebase替換爲Localstorage進行測試,該應用可以正常工作。即使使用BackFire,數據也在不斷更新。

+1

集合中的模型有一個對集合的引用,這個集合引用了模型...所以這就是你的循環。所以要麼你錯用了它,要麼Backfire有一個bug,並且在某處丟失了toJSON調用。 –

+0

你的評論幫我弄清楚了這個問題。 tl; dr:需要使用'mode.set'而不是'model.save' 該文檔說 「BE AWARE!你不需要調用任何影響遠程數據的函數,如果你調用fetch或sync在收藏上,圖書館會默默地忽略它。「 雖然集合,它忽略了獲取和同步,但如果我使用'model.save'委託給'Backbone.sync',事與願違不會忽略它,並拋出這個錯誤。 謝謝! –

+0

你可能想正確的了作爲一個答案,然後接受它,可能是其他人的一個很好的參考。由於你可以回答自己的問題,並接受這些答案(但你必須等待AFAIK 24小時接受你自己的答案)。 –

回答

1

如果您使用的是Backbone.Firebase.Collection,請不要調用model.save(),只需使用model.set()編輯模型並更新集合即可。

相關問題