如果我使用嵌套集合/模型綁定骨幹模型,請通過websockets將其發送到其他骨幹客戶端和JSON.parse模式model = JSON.parse(model)
變量模型的工作方式與其他客戶端上的一樣嗎?運輸backbone.js模型?
回答
號
也許我會闡述。當我這樣做:
var o = JSON.parse(JSON.stringify(model));
我結束了一個簡單的對象o
。爲什麼?那麼,首先,JSON.parse()
不知道任何關於非基元類型(其中Array和Object被視爲原始類型),特別是它不知道Backbone模型是什麼,所以它不能重建它。此外,JSON.stringify
將在其參數(如果有的話)和Backbone supplies a toJSON
上調用toJSON
方法,該方法僅將模型屬性的副本作爲簡單(可能是嵌套的)對象返回。所以一旦你有從JSON.stringify(model)
的輸出,字符串和模型之間根本沒有連接,你只需要一個普通的舊的序列化的JavaScript對象。
如果您想將Backbone模型從一個系統移動到另一個系統,我認爲您必須自己跟蹤所有模型類型和對象信息,然後在另一側手動重建您的序列化對象圖片。
將模型保存回其URL,向另一個Backbone客戶端發送ID,然後像往常一樣從模型URL中重新加載它可能會更好。 JSON用於序列化數據,而不是對象,因爲對象留給應用程序解釋數據。
我知道backbone爲每個對象維護一個內部id,所以如果你像他們那樣轉移他們,我不知道如果沒有衝突或重複cid的可能性,它是如何工作的。
從骨幹網的網站:
的模型一個特殊性質,在CID或客戶端ID是自動分配到所有型號的唯一標識符 時,他們首先創建 。當模型尚未保存到服務器的 ,並且還沒有其最終的真實ID時,客戶端ID很方便,但在UI中必須已經顯示 。客戶ID的格式爲:C1,C2,C3 ...
編輯:
閱讀'畝太短的回答我對他的回答後達成一致,但一些交代給他加評論他留在下面,我發現非常豐富。由於backbone.js模型具有toJSON()函數,因此當調用JSON.stringify(model)時,它不會解析所有屬性,就像您期望的那樣,它只解析toJSON()方法返回的對象。 '畝太短'的優秀答案。
MDN信息JSON.stringify():https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/JSON/stringify
但'cid'沒有出現在'JSON.stringify()'輸出中,Backbone的'toJSON()'只返回模型的屬性。所以你必須手工完成所有的序列化操作,然後在另一側清理模型類型和對象標識符以重建圖形。試着用你的一個Backbone模型做一個'console.log(JSON.parse(JSON.stringify(model)))',你會看到會發生什麼。 –
@ muistooshort很好的答案,並感謝JSON.stringify()信息。 –
- 1. 模型Backbone.js的
- 2. Backbone.js模型
- 3. Backbone.js模型緩存
- 4. backbone.js複雜模型
- 5. Backbone.js + Spring MVC。保存模型
- 6. backbone.js模型屬性undefined
- 7. 嵌套模型與Backbone.js的
- 8. Backbone.js模型與視圖SET
- 9. 四個Backbone.js模型問題
- 10. Backbone.js收集多個模型
- 11. Backbone.js部分模型更新
- 12. Json在Backbone.js嵌套模型
- 13. Backbone.js模型驗證方法
- 14. Backbone.js模型與集合
- 15. Backbone.js:模型不出現
- 16. Backbone.js中的嵌套模型
- 17. Backbone.js和非模型對象
- 18. Backbone.js singular模型不在集合中
- 19. backbone.js /從模型訪問視圖
- 20. Backbone.js模型不從集合繼承
- 21. backbone.js從JS對象獲取模型
- 22. 無法在Backbone.js中訪問模型
- 23. 獲取模型數據到視圖backbone.js
- 24. Backbone.js將文件鏈接到模型
- 25. 茉莉花沒有找到Backbone.js模型
- 26. Backbone.js:爲每個模型添加驗證
- 27. Backbone.js中的訪問模型視圖
- 28. backbone.js - 從點擊事件訪問模型
- 29. Backbone.js未使用集合模型值
- 30. Backbone.js反向綁定(UI到模型)
感謝您的好評。我正在通過websockets完成所有這些工作,所以我可能會設計一種方法來從原始數據重建狀態。 – fancy
@Lochlan:問題是關於將模型實例從一個地方複製到另一個地方。在一個地方,你將不得不'JSON.stringify(模型)'得到一個你可以發送到別處的字符串(JSON格式)。然後,在某個地方(或某個時間),您將用'JSON.parse'解壓該字符串。 –