2013-10-17 24 views
0

嗨,這是我的第一個Backbone.js問題。我花了幾個小時,試圖想出如何從這個JSON rander:在解析中修改模型

{ 
    "key1": "value1", 
    "key2": "value2", 
} 

IMO我應該在解析方法將其更改爲:

{ 
    {title: "key1", description: "value1"}, 
    {title: "key2", description: "value2"}, 
} 

所以它會更容易輸出數據與表車把:

<tr> 
    <td>{{title}}</td> 
    <td>{{description}}</td> 
</tr> 

這是我的模型解析方法

parse : function (response) { 
    _.each(response, function (value, key, list) { 
    this.set({ "title": key, "description": value }); 
    }, this); 
    return response; 
} 

回答

4
parse : function (response) { 
    var res = []; 

    _.each(response, function (value, key, list) { 
    res.push({ "title": key, "description": value }); 
    }); 

    return {"result": res}; 
} 

您可以像這樣訪問模型數據。

model.get("result"); 

注:

這是錯誤的語法。

{ 
    {title: "key1", description: "value1"}, 
    {title: "key2", description: "value2"}, 
} 

你應該把它放在一個數組中。

[ 
    {title: "key1", description: "value1"}, 
    {title: "key2", description: "value2"}, 
] 
1

如果你期望從響應對象的列表,你應該用集合,而不是模型。

收集解析方法可以像

parse:function(resp){ 
    return _.map(_.keys(resp),function(key){ 
       return { 
        title:key, 
        description:resp[key] 
       } 
      }) 
}