在解析中修改模型

时间:2013-10-17 13:29:17

标签: backbone.js underscore.js marionette

嗨,这是Backbone.js的第一个问题。我花了几个小时试图找出如何从这个JSON运行:

{
  "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;
}

2 个答案:

答案 0 :(得分: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 :(得分:1)

如果您期望响应中的对象列表,则应该使用集合而不是模型。

集合解析方法可以看起来像

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