Я пытаюсь получить два списка 2-х списков сообщений в блоге из 2 категорий (новости и события), а затем отобразить их в двух разных столбцах моей домашней страницы. Мне необходимо выполнить 2 отдельных вызова Ajax, чтобы получить эти сообщения в блоге. Я не использую данные ember-данных для этой операции, так как я не вижу преимущества использования этого в этом сценарии (но я могу ошибаться).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 documetation, я должен получить эти данные в крюке 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 для этого сценария?
+1 для RSVP.hash(). Отличный ответ, именно то, что мне нужно - спасибо! – rog