我正在尝试从 2 个类别(新闻和事件)中获取两个获取 2 个博客文章列表,然后将它们显示在我主页的 2 个不同列中。我需要执行 2 次单独的 Ajax 调用来获取这些博客文章。我不使用 ember-data 进行此操作,因为我看不到在这种情况下使用它的优势(但我可能错了)。
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
)以利用 Promise。所以我尝试以这种方式重写我的代码:
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 会有什么好处吗?