使用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(); // []
答案 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"}
]