Вот очень простой пример того, как я это делаю с вашим подходом (обратите внимание на «ясный»).
Вы можете использовать clear + find со своего маршрута/контроллера/независимо. Я также добавил «beforeSend» в $ .ajax в некоторых из моих больших приложений (это будет вызывать прозрачный для вас, прежде чем XHR разрешен)
App.Person.reopenClass({
people: Ember.A([]),
clear: function() {
this.people = Ember.A([]);
},
add: function(hash) {
var person = App.Person.create(hash);
this.people.pushObject(person);
},
remove: function(person) {
this.people.removeObject(person);
},
find: function() {
var self = this;
$.getJSON('/api/people', function(response) {
response.forEach(function(hash) {
var person = App.Person.create(hash);
Ember.run(self.people, self.people.pushObject, person);
});
}, this);
return this.people;
}
});
Если вы не используете уголек-данных , вы, вероятно, используете $ .getJSON для получения ваших данных. Таким образом, чтобы снова получить данные, вы снова должны сделать один и тот же ajax-вызов через событие маршрута (которое вы можете использовать DRY с использованием общего метода) или программно с помощью определенного метода действий в вашем контроллере. – borisrorsvort
Как вы храните это состояние без данных ember? У вас есть модель с reopenClass (чтобы держать один массив в приложении глобально?) –
@ToranBillups Да, я использую Ember.Object и reopenClass, чтобы создать новый метод и вернуть этот метод из моего крюка модели маршрута. – davidpmccormick