2015-10-05 37 views
0

似乎既沒有Backbone集合fetch也沒有parse函數爲檢索到的模型調用構造函數;我對嗎?所以如果需要爲它們初始化一些特殊的屬性(在構造函數或初始化器中),他必須明確地調用它。例如,success回調的fetch函數。或者我可能會想念什麼?對於檢索到的模型,Backbone是否獲取調用構造函數?

示例如下。

return t.collection.fetch({ 
    success: function() { 
     for (var i = 0; i < t.collection.models.length; i++) { 
      t.collection.models[i] = new MyModel(t.collection.models[i]); 
     } 
    }, 
}); 

這裏t.collection是類型

class MyModelsCollection extends Backbone.Collection<MyModel> { 
    url = "/api/MyModels/"; 
} 

打字稿已被使用的。

解決方案The answer讓我檢查這裏使用的TypeScript語法。我發現這是不正確的。它必須像在this answer(除了super()呼叫應該先去)。所以應該在構造函數中手動設置集合的model屬性。

可能是所有人都很明顯。

回答

0

如果您只是將您的模型類鏈接到集合的model option,則所有內容都將自行工作。

var MyModel = Backbone.Model.extend({}); 

var MyCollection = Backbone.Colleciton.extend({ 
    url: "/api/MyModels/", 
    model: MyModel 
}); 

MyCollection實例將被獲取並會有的模式從後端的陣列,將創建爲MyModel實例的所需量。

+0

對於純JavaScript,你的回答顯然是正確的,它讓我檢查了這種情況下的TypeScript語法。我將在我的問題中包括我調查過的信息。謝謝。 – Hoborg

+0

我發現這個[TodoMVC的例子](http://todomvc.com/examples/typescript-backbone/)在帶Backbone的TypeScript中,可能會對你有所幫助。 – antejan

+0

謝謝。它似乎包含了一些有趣的事情。 – Hoborg

相關問題