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ść?

questionAnswers(3)

yourAnswerToTheQuestion