2011-12-26 62 views
1
//Model 
var Dog = Backbone.Model.extend({ 
    name:'', 
    breed:'' 

}); 


//Collection 
var Dogs = Backbone.Collection.extend({ 
    model : Dog, 
    url : '/dogs' 

    parse : function(res) 
    { 
     alert('response' + res); 
    return res; 
    } 

}); 

這是我從使用Jersey實現的服務器接收的JSON對象。 我從服務器返回DogModel的列表,它被轉換成JSON使用JSON對象的Backbone.Collection的自動填充

@Produces(MediaType.APPLICATION_JSON) 

{"DogModel":[{"name":"Jane","breed":"Great Dane"}, 
{"name":"Rocky","breed":"golden Retriver"}, 
{"name":"Jim","breed":"Lab"}]} 

難怪我沒有理解集合的使用情況和它的URL正確屬性。 我的假設是,當Collection被調用時,它會從服務器獲取狗的詳細信息並填充集合。

我確實得到了如上所述的響應,但收集並沒有像預期的那樣填充。

我應該怎麼做才能自動填充集合中的模型列表? 我是否需要處理JSON對象的表示?

幫助讚賞!!!

回答

11

parse函數需要返回狗的數組。所以你可以如下更新你的代碼。

parse : function(res) 
{ 
    alert('response' + res); 
    return res.DogModel; 
} 

在一個側面說明,要像下面所示的代碼(see documentation

var Dog = Backbone.Model.extend({ 
    defaults: {  
    name:'', 
    breed:'' 
    } 
}); 
+0

保羅,感謝您的回答對defaults哈希聲明模型的默認屬性值。它的工作... – Ram 2011-12-27 14:48:01