我在嘗試做些有趣的事情:我想將記錄更改從一個客戶端發送到另一個客戶端,並讓第二個客戶端更新以顯示這些更改。基本上協作觀看。 第二個客戶端無法進行更改,他只能觀看。ExtJS在客戶端之間同步記錄
像字符串,數字,複選框等簡單的字段很容易,工作馬上。
引用是問題。如果我有一個組合使用另一個模型作爲源,我無法在第二個客戶端上更新它。
我試着設置只是id,然後整個引用的對象,我試過各種set options,但根本沒有骰子。
記錄確實發生了變化,我看到數據被更新了,我甚至能夠手動修改_ reference屬性,但UI一直顯示這些字段的舊值。
有沒有辦法將記錄從一個客戶端發送到另一個客戶端,讓另一個客戶端接管所有的值並在UI中顯示它們?(倒不如送just the changes,但我會很高興,如果我能得到它與整個記錄工作)
編輯:我使用的是socket.io SailsJS,所以p2p連接不是問題。
我發現了數據是這樣的:
var data = record.getData(true);
broadcastRecord(data);
而在另一側上我嘗試:
record.set(data);
爲接收側的代碼示例將被理解的是,如果任何人有一個ide如何解決這個...
一旦設置並運行了p2p連接,將記錄從一個客戶端發送到另一個客戶端是非常容易的。正如你已經發現的那樣,這對文本和數字以及你可以存儲在記錄中的任何東西都很有效。但是,你提到的東西似乎不是記錄的一部分。那麼,你究竟想要發送什麼? – Alexander
我在原帖中添加了更多信息。我所說的數據是記錄的一部分,但不是記錄數據的一部分。在record.data.user中找不到引用的用戶,但是在包含整個用戶文檔的record._user中,我不知道爲什麼,但事實就是這樣。當我做data = record.getData();那麼data.user是空的。但是,record.getData(true);返回包含用戶文檔的mongodb用戶集合標識的data.user。 –
'record.getData(true)'返回關聯,所以這就是爲什麼你的參考數據在那裏......爲了更新用戶數據,你可以直接綁定它,或者你必須做'記錄.user()。set('fieldName',fieldValue)'。在Ext JS 6.5中,有一個['loadData'](http://docs.sencha.com/extjs/6.5.1/classic/Ext.data.Model.html#static-method-loadData)方法可能是有用的對於你來說,但是這會創建一個全新的模型......它很容易回溯到6.2。 – incutonez