我最近才开始使用 Backbone.js,我正在开发一个应用程序,现在使用 Brunch 向外部 API 发出 JSONP 请求以填充我的集合和模型。我正在关注这些以前的帖子(this和this)关于使用 Backbone 执行 JSONP 请求,但由于某种原因,我的集合仍然没有获取数据。
我的模型(app/models/model.js):
module.exports = Backbone.Model.extend({
});
我的收藏(app/models/collection.js):
var Post = require('./model');
module.exports = Backbone.Collection.extend({
model: Post,
url: "http://somedata.com/api/posts/list/stuff",
sync: function(method, model, options) {
options.timeout = 10000;
options.dataType = "jsonp";
options.jsonp = "JSONPcallback";
return Backbone.sync(method, model, options);
},
parse: function(response) {
if (response) {
var parsed = [];
for(var i = 0; i < response.results.length; i++) {
parsed.push(response.results[i][0]);
}
return parsed;
}
}
});
然后,在 app/application.js 的初始化方法中,我通过以下方式调用它:
var Category = require('models/collection');
this.cat = new Category();
this.cat.fetch();
现在,当我查看 console.log 中的 parse 函数时,我看到正在获取数据,因此请求成功通过。但是,当我的视图被渲染并且我在 app/views/view.js 中执行 console.log(application.cat.models) 时,我什么也得不到——为什么会这样?我的模型/系列上的代码有什么问题吗?
此外,JSONP 数据具有以下格式,这就是为什么遍历 for response.results[i][0] 并返回一个包含所有数据的数组,这应该可以解决问题,对吧?
{"results":[
{"0":{"id":xxx,"title":xxx,"link":xxx},
"description":xxx},
{"0":{"id":xxx,"title":xxx,"link":xxx},
"description":xxx},
{"0":{"id":xxx,"title":xxx,"link":xxx},
"description":xxx},...
]}
非常感谢任何帮助...