Backbone:从客户端部分的json文件中获取数据

时间:2012-05-12 18:04:41

标签: javascript json backbone.js

使用Backbone.js,我想在模型或集合实例上调用fetch方法时从客户端部分的Json文件中获取数据。

我的集合中的url propertyMyCol)指向以下json文件,如下所示:

[
  {title: "_My trip to Bali", src: "bali-trip.jpg"},
  {title: "_The flight home", src: "long-flight-oofta.jpg"},
  {title: "_Uploading pix", src: "too-many-pics.jpg"}
]

我执行以下命令:

myCol = new MyCol();
myCol.fetch(); // the Request Method GET is ok 
myCol.toJSON(); // [] 

2 个答案:

答案 0 :(得分:4)

请记住,fetch不是同步函数。 fetch方法将向服务器发起请求,并通过事件或回调向您发出响应警告。

查看fetch方法http://documentcloud.github.com/backbone/#Model-fetch的主干文档。

尝试做这样的事情。

myCol = new MyCol();
myCol.fetch({
    success: function() { //This is fired if the request is succesful
        myCol.toJSON();
    }
});

或者

myCol = new MyCol();
myCol.on('change', function() { //This is fired if the model's attributes change
   myCol.toJSON();
});
myCol.fetch();

或者正如@roberkules所提到的,fetch返回jqXHR,所以你可以这样做。

myCol = new MyCol();
myCol.fetch()
     .done(function() {
         myCol.toJSON();
      })
      .fail(function() {
          alert('Oh No!');
      });

答案 1 :(得分:2)

@fguillen说你可以使用success and error callbacks调试你的代码。 无论如何,错误是你的json格式,因为成员需要是一个字符串。

试试这个,它会起作用:

[
  {"title": "_My trip to Bali", "src": "bali-trip.jpg"},
  {"title": "_The flight home", "src": "long-flight-oofta.jpg"},
  {"title": "_Uploading pix", "src": "too-many-pics.jpg"}
]