如何从Backbone中的嵌套json对象获取Model属性

时间:2013-09-17 05:26:20

标签: javascript json backbone.js

** JSON数据**

{
  "data" : [{
      "book" : "first book", -- > i want this via model.get('book');
      "aurthor" : "xyz"
    }
  ]
}

**使用jquery Ajax获取json数据。 **

var jsonData = {};
$.ajax({
  url : 'booklist.json',
  async : false,
  dataType : 'json',
  success : function (json) {
    jsonData = json.data;
  }
});

**这里的模型声明**

var MyModels = Backbone.Model.extend({
    initialize : function () {},
    defaults : {}
  });

var modelinstance = new MyModels(jsonData);

modelinstance.get('book'); // it is giving undefined how can i get this value.

**请帮助我做错的地方。我是Backbone的新手。 **

1 个答案:

答案 0 :(得分:4)

如果数据总是包含这样的单个对象,那么您只需在模式中添加parse method

  

解析 model.parse(response, options)

     只要服务器返回模型的数据, fetch save ,就会调用解析。该函数传递原始response对象,并应在模型上返回属性hash set

这样的事情:

parse: function(response) {
    return response.data[0];
}

您还可以使用parse选项通过model constructor触发parse: true来电:

  

构造函数/初始化 new Model([attributes], [options])
  [...]
  如果{parse: true}作为选项传递,属性将首先由解析转换,然后才能设置在模型上。

因此,如果您通过$.ajax电话手动加载数据,那么您将拥有以下内容:

success: function (json) {
    var m = new MyModel(json, { parse: true });
    // Do something with m...
}