我正在嘗試使用Backbone和API。覆蓋主幹的解析函數
默認API響應格式爲:
{
somemetadatas:xxx ,
results:yyy
}
無論是單個模型或集合的抓取。
所以,據我知道,我可以覆蓋與骨幹parse
功能:
parse: function (response) {
return response.results;
},
但我已經看到了the documentation:
解析
collection.parse(response)
解析每當 ac時,主幹將調用 ollection的模型由服務器在獲取中返回。 函數傳遞了原始
response
對象,並應返回 模型屬性數組以添加到集合中。默認的 實現是無操作的,只需傳遞JSON響應即可。 如果您需要使用預先存在的API,或者更好地使用命名空間,則覆蓋此操作。請注意,之後,如果您的模型類 已具有parse
函數,則將針對每個提取的 模型運行該函數。
所以,如果我有一個集合的響應取這樣的:
{
somemetadatas:xxx ,
results:[user1,user2]
}
上收集的第一parse
功能將提取[user1,user2]
。
但醫生說:
請注意,以後,如果你的模型類 已經有一個
parse
功能,它會針對每個運行進賬 模型。
所以它會嘗試找到response.results;
上user1
和user2
我需要在模型和收藏兩種解析功能,因爲這兩個模型和收集DATAS將結果屬性下。
但是,如果我抓取一個集合,我不希望模型解析函數再次用於單個數組元素。
那麼是否有解決這個問題的方法?
我想到了解決辦法在我的收藏解析功能將改變這樣的事情:
{
somemetadatas:xxx ,
results:[user1,user2]
}
弄成這個樣子:
[ {results.user1} , {results.user2} ]
使模型解析功能不會在失敗收集提取。 但這有點不好意思...是否有任何優雅的解決方案來解決這個問題?
順便說一句,我的API總是會產生這種形式的結果,是有可能在默認情況下,以覆蓋所有我的模型和收藏parse
功能? (對不起,我是一個JS noob ...)
感謝會嘗試, – 2012-08-13 17:44:08
我定製'parse'被調用,但沒有任何效果 - 在模型中值僅是在構造函數中提供一個初始...任何想法? – Dor 2014-02-06 16:34:39
如果您正在嘗試對模型ID執行操作,則無法使用版本1.1.0。 http://backbonejs.org/#changelog如果不是這樣,你將不得不發佈一個問題。 – nikoshr 2014-02-06 16:40:10