Emberjs: jak wyświetlać ładowanie spinnera i powiadomienia o operacjach modelu
Używam ember.js 1.2 i napotykam problem podczas próby wyświetlenia ładującego spinnera i powiadomień podczas operacji crud na moich modelach.
Oto kod:
var MyModelController = Ember.ObjectController.extend({
needs: ['application'],
application: Ember.computed.alias("controllers.application"),
actions: {
save: function() {
var _this = this;
// Display the spinner
this.get('application').get('loading').trigger(true);
this.get('model').save().then(function(response) {
// Hide the spinner
_this.get('application').get('loading').trigger(false);
// Display the success message
_this.get('application').get('flash').success('The model has been updated.');
}, function(response) {
// Hide the loading spinner
_this.get('application').get('loading').trigger(false);
// Display the error message
_this.get('application').get('flash').danger('Error updating the model.');
});
}
}
});
Dwa główne problemy:
Po pierwsze: pokrętło jest wyświetlane z tłumaczeniem trwającym 0,5 s, ale operacja zapisywania jest wykonywana z mniejszym czasem trwania, a pokrętło jest wyświetlane i znika natychmiast. Tutaj chciałbym ustawić timer 1s przed wywołaniem operacji składowania na moim modelu, aby zapewnić prawidłowe wykonanie animacji. Jak to możliwe?
Po drugie: metoda sukcesu na moim obiekcie flash jest powiązana z określonym {{view.message}} na szablonie. Jeśli nazywam tę metodę poza „wtedy” obietnicy, wiadomość jest dobrze wyświetlona, ale w moim przypadku nie jest tak, jakby wiązanie nie zostało wykonane. Czy tęskniłem za czymś na drodze do wykorzystania obietnicy? Jak można wyświetlić tę wiadomość?