2015-02-28 7 views
28

Ich brauche einen Rückruf, wenn state.go erfolgreich aufgerufen wurde, und setze meine Warnmeldung. Derzeit wird die Nachricht an das Array gesendet, nachdem state.go aufgerufen wurde. State.go ruft den Controller auf, und das Array mit der Warnmeldung wird auf leer gesetzt.UI-Router state.go Rückruf bei Statusänderung

Ergebnis, keine Warnmeldung wird angezeigt.

Controller:

$scope.alerts = []; // empty array, initialized on startup 
..... 
// This could be any function 
.success(function(data, status, headers, config, statusText){ 
    $state.go($state.current, {}, {reload : true}); 
    $scope.alerts.push({type : 'success', msg : status}); 
}) 
.error(function(error){ 
    console.log(error.message); 
}); 
+0

was ist der Zweck der '$ state.go ($ state.current, {}, {reload: true});'? –

Antwort

86

$state.go() gibt ein Versprechen.

So etwas wie:

$state.go('wherever', {whenever: 'whatever'}).then(function() { 
    // Get in a spaceship and fly to Jupiter, or whatever your callback does. 
}); 
+0

Ja. Das ist definitiv die richtige Antwort. –

+0

@ daniel-larsson danke – Fuser97381

+0

Vielen Dank! –

6

Sie können Zustandsänderung Hörer verwenden.

$rootScope 
      .$on('$stateChangeSuccess', 
       function (event, toState, toParams, fromState, fromParams) { 
        //show alert() 
       }); 

Siehe .

+1

Mit Rootscope saugt. Ich mag diese Antwort überhaupt nicht. Es muss einen besseren Weg geben. – Fuser97381

+1

@ Fuser97381 Warum Saugen mit Rootscope? –

+0

@RocoCTZ Die Verschmutzung des globalen Variablenraums wird allgemein als schlechte Idee angesehen. In diesem speziellen Fall ist es schlecht, weil Sie Code in den globalen Kontext einfügen, der nur in einem bestimmten Kontext ausgeführt werden muss. Es belastet den globalen Kontext, der schlecht ist. Lesen Sie weiter zum Thema hier: http://c2.com/cgi/wiki?GlobalVariablesAreBad – Fuser97381

Verwandte Themen