0

我相信,在我的一個地方,我的Backbone集合不能正確存儲他們的模型。我還使用backbone-pageable分頁收集,我的骨幹應用程序基於https://github.com/alessioalex/ClientManager和一些骨幹教程。骨幹集合的模型 - 對象不正確的結構?

基本上,我的理解是,骨幹集合應該有一個模型的屬性是:

Object 
    models: Array 
    0: Object 
     model 
     model, etc 

但雷似乎有結構:

Object 
    models: Array 
    0: Object 
     attributes: Object 
     tasks: Array (from my server JSON response) 
     total_match, etc (other variables for pagination) 

所以這樣,在我的模板,我總是必須使用任務[0]。每個而不僅僅是任務。每個

這也意味着,當向集合添加模型時,它們不會添加到任務中的模型數組中,b UT代替骨幹創建了另一個陣列模式,使得它變成了:

Object 
    models: Array 
    0: Object 
     attributes: Object 
     tasks: Array (from my server JSON response) 
     total_match, etc (other variables for pagination) 
    1: Object 
     (new model attributes) 

這就意味着,我的模板代碼,搜索任務[0]不把它撿起來。這也意味着對於我的集合,我不能使用collection.get(id),即使使用正確的ID和模型的指定IDAttribute,它也不會返回任何內容。

我有點難住。

+1

您的REST端點是否返回數組? – thibauts

+0

嗨,JSON響應:{「tasks」:[{「id」:「88」,...「}],」total_pages「:1,」total_match「:10,」total_tasks「:14} – RTolton

回答

0

看起來你的服務器正在返回一個嵌套在JSON響應中的tasks數組。爲了讓Backbone知道如何正確解析JSON,您需要覆蓋parse()方法並告訴它使用tasks陣列作爲模型的源。

var MyModel = Backbone.Model.extend({});  
var MyCollection = Backbone.Collection.extend({ 
     model: MyModel, 
     parse: function(response) { 
      //tell Backbone to turn each element in 'tasks' into an instance of MyModel 
      return response.tasks; 
     } 
}); 
+0

這是它!完全忘了改變解析函數,或者,在backbone-pageable中,它的parseRecords:'parseRecords:function(resp){return __results; }'謝謝!但是有沒有一種方法可以訪問其他JSON屬性在我選擇解析的數組之外? – RTolton

+0

管理回答我自己的問題。將JSON傳遞給模板時,我也可以發送backbone-pageable狀態對象:'tmpl = that.template({projects :projects_json,state:projects.state});' – RTolton