2015-01-13 35 views
0

我真的很想理解這裏的概念(而不是接收代碼解決方案)。Backbone.js我想做model.fetch,並將數據反射回來源集合

我有一個由fetch填充的集合。我想從集合中獲取單個模型,從服務器獲取最新數據,然後將來自服務器的數據放回到集合的模型版本中。

用骨幹術語重述文檔:我想確保我有最新的服務器狀態。我不會關心觸發的「變化」事件,因爲我期望模型幾乎每次都會發生變化。取從服務器重置模型的狀態,所以我應該能夠做這樣的事,對不對?:

[僞]

model.fetch(); 
在獲取成功處理程序調用其中的一個

this: collection.add(model, {merge: true}); 
..or: collection.set(model);   

如果這還不足以完成我的任務,我錯過了什麼概念?

編輯 - 添加細節

我打電話取():

controller.model.fetch({ 
    success: function(model){ 
     console.log(model); 
     updateView(); 
    }, 
    error: function(){ 
     console.error('error fetching contact model'); 
    } 
}); 

成功回調後取()解僱。我可以看到,該模型具有新的數據和圖像已被修改,需要重新下載:

ImageDateLastUpdated has changed

當我打電話給我的功能,更新的觀點,沒有什麼明顯的變化,因爲最新的數據仍然在「改變」的成員......看起來。將最新數據從「更改」成「屬性」成員的標準方式是什麼?這是在文檔中明確的嗎?

回答

0

沒有「模型的集合版的」如果你指的是模式集合中並調用取,沒有什麼其他的需要做。 此模型已經是集合的一部分,新數據將填充。

javascript中的對象是通過引用傳遞的,所以除非你看到像model.clone()這樣的東西來克隆它,否則你指的是同一個對象。

+0

必須有別的東西。我的代碼到達了獲取的成功處理程序。模型的「屬性」屬性沒有改變,但現在「已更改」成員有一個新的第0個孩子,並帶有我期待的新值。基於文檔的「[fetch]從服務器重置模型的狀態」,我期待我在改變的[0]中看到的值是「重置模型狀態」並且位於「屬性」成員中。顯然,我誤解或錯過了文檔中的某些內容? – jbobbins

+0

不確定你改變[0]是什麼意思。屬性改變了,或者沒有改變。你能解釋什麼是「第0個孩子」嗎?數據沒有更新,或者我們「更改」事件沒有被觸發? –

+0

在Chrome開發工具中,當我在提取後調用console.log()模型時,該模型有一個屬性成員和一個已更改的成員(以及其他成員)。已更改的成員具有一個子對象「0」,它由與我在屬性中看到的相同的已命名值組成,但它具有從服務器獲取的最新值。如何獲取在模型中找到的最新值,以便我的綁定視圖顯示新值? – jbobbins