最近Backbone.jsの使用を開始し、現在、Brunchを使用して外部APIへのJSONPリクエストを実行してコレクションとモデルにデータを入力するアプリに取り組んでいます。Backboneを使用してJSONPリクエストを実行することについて、これらの以前の投稿(thisおよびthis)をフォローしていますが、何らかの理由でコレクションがまだデータを取得していません。
私のモデル(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のinitializeメソッドで、次のように呼び出しています。
var Category = require('models/collection');
this.cat = new Category();
this.cat.fetch();
ここで、console.logの解析関数を見ると、データがフェッチされているのがわかり、リクエストは正常に処理されています。ただし、ビューがレンダリングされ、app / views / view.jsでconsole.log(application.cat.models)を実行すると、何も表示されません。これはなぜ発生するのでしょうか。モデル/コレクションのコードに何か問題がありますか?
また、JSONPデータの形式は次のとおりです。そのため、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},...
]}
本当に助けていただければ幸いです...