私は、2つのカテゴリ(ニュースとイベント)から2つのブログ投稿のリストを2つ取得し、それらをホームページの2つの異なる列に表示しようとしています。これらのブログ投稿を取得するには、2つの別々のAjax呼び出しを実行する必要があります。私はこのシナリオでそれを使用する利点は見当たらないので、この操作にはember-dataを使用しません(しかし、私は間違っているかもしれません)。Ember.js:複数のAjaxが単一のルートで呼び出す
export default Ember.Route.extend({
setupController(controller, model) {
var wpUrl = 'http://public-api.wordpress.com/rest/v1/sites/company.wordpress.com/posts/?number=2&category=';
Ember.$.ajax({ url: wpUrl + 'news', dataType: "jsonp", type: 'GET' }).then(function (data) {
controller.set('news', data.posts);
});
Ember.$.ajax({ url: wpUrl + 'events', dataType: "jsonp", type: 'GET' }).then(function (data) {
controller.set('events', data.posts);
});
}
});
上記のコードが機能します。しかし、私がEmberの文書で読んだところでは、model
フック(setupController
ではなく)のデータを入手して、約束を利用するべきです。だから私はこのように自分のコードを書き直そうとしました:
export default Ember.Route.extend({
model() {
var wpUrl = 'http://public-api.wordpress.com/rest/v1/sites/company.wordpress.com/posts/?number=2&category=';
return {
news: function() {
return Ember.$.ajax({ url: wpUrl + 'news', dataType: "jsonp", type: 'GET' }).then(function (data) {
return data.posts;
})
},
events: function() {
return Ember.$.ajax({ url: wpUrl + 'events', dataType: "jsonp", type: 'GET' }).then(function (data) {
return data.posts;
})
}
};
}
});
しかし、これは動作しません。 Ajaxの呼び出しは、ページがレンダリングされた後に実行されますが、遅すぎます。私はここで私が間違っているのか分からない。そのシナリオでember-dataを使用する利点はありますか?
+1はRSVP.hash()です。優れた答えは、私が必要としたものです - ありがとう! – rog