2013-10-02 49 views
1

有沒有辦法將記錄添加到客戶端model並向Ember表明這些記錄已經在服務器端?在沒有完全刷新的情況下更新客戶端模型

因此,例如,如果我的Person模型具有「Peter」和「Paul」的記錄,但隨後服務器添加「Mary」,我的客戶端就以非燼類數據的方式知道這一點。我希望能夠讓客戶以一種不會對後續交互造成狀態問題的方式添加「Mary」。

對於那些必須知道「用例」 ......我想:

  • 有第一次請求的findAll()對於一個給定model拉全套資料從後面服務器
  • 在會話中隨後的請求調用自定義的AJAX請求,該請求僅從返回的結果集返回差異
  • 我希望能夠將這些差異推送到客戶端模型中,而不會將其分解爲「狀態」

回答

0

有時我們使用websockets中的數據創建並更新客戶端上的EmberData記錄。在這種情況下,更改已經在服務器上,所以我們只是想在客戶端上進行更改而不更改狀態等,完全如您所描述的那樣。

當我們在客戶端上創造新的紀錄,我們push他們進店,如:

this.store.push('post', { id: 1, body: 'Ember!' }); 

而且,當我們在客戶端上更新現有記錄,我們update他們在店裏,例如:

this.store.update('post', { id: 1, hidden: true }); 
+0

太好了,謝謝。順便說一句,我期待着找一些時間讓我的應用程序中有一些websocket。兩個簡單的問題......我在'store'上看不到'update()'方法。我錯過了什麼嗎?另外,對於你的「推」示例,只是想驗證在「推」用例中,你正在談論的是在服務器上添加新記錄的情況,通過websocket發送給客戶端的通知,然後「推」在客戶端實現相同的結果。是對的嗎? – ken

+0

@ken(1)'update'是EmberData(2)最新版本中'store'的一種方法,您是對的 – gerry3

+0

(1)好的,我在代碼中看到它。它還沒有製成文件。 – ken

相關問題