Próbuję uzyskać dwie listy 2 postów na blogu z 2 kategorii (wiadomości i wydarzenia), a następnie wyświetlić je w 2 różnych kolumnach mojej strony głównej. Wymagane jest ode mnie wykonanie dwóch oddzielnych wywołań Ajax, aby uzyskać te posty na blogu. Nie używam danych ember dla tej operacji, ponieważ nie widzę korzyści z używania go w tym scenariuszu (ale mogę się mylić).Ember.js: wiele wywołań Ajax na jednej trasie
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);
});
}
});
Powyższy kod działa. Ale z tego, co przeczytałem w Dokumentacji Ember, powinienem dostać te dane w haku model
(zamiast setupController
), aby skorzystać z obietnic. Więc starałem się ponownie napisać kod w ten sposób:
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;
})
}
};
}
});
Ale to nie działa. Wywołania Ajax są wykonywane, ale jest za późno, po wyrenderowaniu strony. Nie jestem pewien, co robię źle. Czy istnieje jakaś korzyść z używania danych ember dla tego scenariusza?
+1 dla RSVP.hash(). Doskonała odpowiedź, dokładnie to, czego potrzebowałem - dziękuję! – rog