3

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

url property我集合中的 ( )MyCol指向以下 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(); // [] 
4

2 回答 2

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!');
      });
于 2012-05-13T08:44:16.570 回答
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"}
]
于 2012-05-13T08:35:06.027 回答