2016-08-09 32 views
1

Ich implementiere einen dynamischen Workflow und wenn ich einen bestimmten Punkt erreiche, muss ich meinen Status neu laden, um den HTML Code wiederzugeben und den Controller neu zu starten, um fortzufahren.

Was ich gefunden habe ist, dass das zweite Mal, dass ich $state.reload() anrufen funktioniert nicht. Ist das das gewünschte Verhalten? Was kann ich tun, um dieses Nachladen zu erzwingen?

if(advanceComplexAction()) { 
    console.log(self.$state); //This is always been printed in console 
    self.$state.reload(); 
} 
else { 
    closeActionWizard(); 
} 

Ich überprüfe meine Konsole und die console.log wird immer gedruckt, aber meine Aussage self.$state.reload() läuft nur richtig das erste Mal, dass ich es nennen.

EDIT:

Ich bemerkte, dass meine URL ändern, wenn ich die erste reload tun und an die Eltern-URL ändert. Das muss das Problem sein, denn beim dritten Mal lädt es nur den parentState neu. Ich weiß nicht, wie dieses

Zum ersten Mal zu lösen, die richtig meine url funktioniert ist:

http://localhost:1234/app/parentstate/childstate 

Nach reload verwenden und alles funktionierte es den Mutter Zustand bewegt.

Also, wenn ich wieder neu laden, wird nur die Elternansicht neu geladen. Ich definiere meine Routen wie folgt.

.config(function($stateProvider, modalStateProvider){ 
    $stateProvider 

.state('app.parentstate', 
    modalStateProvider.create({ 
    animation: true, 
    name: 'app.parentsate', 
    url: 'apps/parentstate', 
    controllerAs: 'parentCtrl', 
    controller: 'ParentCtrl', 
    windowClass: 'semi-modal semi-modal--XXL', 
    templateUrl: function() { 
     return 'app/ui/apps/parent/parent.html'; 
    }, 
    resolve: { 
     //Some resolve function 
     }] 
    } 
    }) 
) 
.state('app.parentstate.childstate', 
    modalStateProvider.create({ 
    animation: true, 
    name: 'app.parentstate.childstate', 
    url: '/childstate', 
    controllerAs: 'childWizardCtrl', 
    controller: 'ChildWizardCtrl', 
    windowClass: 'semi-modal semi-modal--XL', 
    templateUrl: function(){ 
     return 'app/ui/apps/child/child.html'; 
    } 
    }) 
) 

Danke

+0

Wie immer - creating super einfach '' 'PLNKR'' Beispiel wird Ihre Frage wahrscheinlicher werden beantwortet ... –

+0

Ich habe immer $ state.reload() verwendet. Ich interessiere mich für ** selbst ** (self. $ State) –

+0

@DineshSundaraneedi Ich habe mehr Code hinzugefügt und bearbeitet, was ich entdeckt – acostela

Antwort

0

ich gelöst es mit! Das Problem war mit meiner Implementierung von modalState. Ich habe eine OnEnter-Funktion, die automatisch in meinen Parent-Status wechselt, wenn mein Status gleich ist oder wenn ich ihn schließe.

 modalInstance.result 
     .then(function(result) { 
     $log.debug('Modal result', result); 
     }, function(rejection) { 
     $log.debug('Modal dismissed at: ' + new Date() + ' because ' + rejection); 
     }) 
     .finally(function() { 
     modalInstance = null; 
     if ($state.$current.name === options.name) { 
      $state.go('^', $stateParams, { reload: options.reload }); //Here we are moving to parent state 
     } 
     }); 

Ändern dieser behoben mein Problem. Danke für Ihre Antworten

0

Vielleicht sould Sie so etwas wie

$state.transitionTo('current_state', null, {'reload':true}); 
+0

Nein, wenn ich das tue, bewegt sich mein $ -Zustand auf den übergeordneten. – acostela

+0

hast du 'current_state' durch $ state.current ersetzt oder was immer du brauchst? – DMCISSOKHO

+0

ja. Ich weiß nicht, was mit meiner App passiert, wenn ich das Nachladen mache. Die $ state-Abhängigkeit, die injiziert wird, ändert sich in die vom übergeordneten Element und in diesem Moment ist es, wenn es bricht – acostela

0

versuche ich es bekommen!

$state.reload(); 

ist ein Alias ​​für

$state.transitionTo($state.current, $stateParams, { reload: true, inherit: false, notify: true }); 

"reload: true" refresh den übergeordneten Zustand! so müssen Sie vermeiden "$ state.reload"

Versuchen Sie stattdessen

window.location.reload(true) 
+0

das funktioniert nicht, weil meine ganze App neu geladen wird und ich wertvolle Informationen verliere. Ich muss nur den Kindstatus neu laden. Ich habe bemerkt, dass ich das Problem in meiner ganzen Anwendung bekomme. In jedem Zustand, in dem ich versuche, meinen Zustand nach dem erneuten Laden neu zu laden, wird der injizierte $ -Zustand in den übergeordneten geändert. – acostela