0

** 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 的新手。**

4

1 回答 1

4

如果数据总是像这样包裹起来的单个对象,那么您只需向您的模式添加一个parse方法:

解析 model.parse(response, options)

每当服务器返回模型的数据时,在fetchsave中都会调用parse。该函数传递原始response对象,并应返回要在模型上设置的属性哈希。

像这样的东西:

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

您还可以使用以下选项通过模型构造函数parse触发调用:parse: true

constructor / initialize new Model([attributes], [options])
[...]
如果{parse: true}作为选项传递,属性将首先通过解析转换,然后再在模型上设置

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

success: function (json) {
    var m = new MyModel(json, { parse: true });
    // Do something with m...
}
于 2013-09-17T05:44:02.827 回答