Ich benutze ember.js 1.2 und mit einem Problem konfrontiert, während versucht, Lade Spinner und Benachrichtigungen während der Crud-Operationen auf meinen Modellen anzuzeigen. HierEmberjs: wie man Laden Spinner und Benachrichtigungen auf Modelloperationen
ist der Code:
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.');
});
}
}
});
Zwei Hauptprobleme hier:
Erstens: der Spinner mit einer Übersetzung angezeigt, die 0,5s aber die Operation speichern nimmt mit weniger Dauer durchgeführt und der Spinner wird angezeigt und verschwindet sofort. Hier möchte ich einen 1s-Timer einstellen, bevor der Speichervorgang an meinem Modell aufgerufen wird, um sicherzustellen, dass die Animation korrekt ausgeführt wird. Wie könnte es möglich sein?
Zweitens: die Erfolgsmethode auf meinem Flash-Objekt ist gebunden an die spezifische {{view.message}} auf der Vorlage. Wenn ich diese Methode außerhalb des "dann" des Versprechens rufe, wird die Nachricht gut angezeigt, aber in meinem Fall ist es nicht so, als ob die Bindung nicht erfolgt. Habe ich etwas auf dem Weg vermisst, das Versprechen zu nutzen? Wie kann diese Nachricht angezeigt werden?