2013-09-23 5 views
5

Mam konfiguracji aplikacja z 2 stanów, A i AB odbywa się w ten sposób:angularjs stan ui-router nie odświeżać na powrót

$stateProvider.state('A', { 
     url: "/A/{aId}", 
     controller: 'AController', 
     templateUrl: function($stateParams) { 
      return "/A/" + $stateParams.aId + "/layout"; 
     } 
    }).state('A.B', { 
     url: "/B/{bId}", 
     controller: 'BController', 
     templateUrl: function($stateParams) { 
      return "/A/" + $stateParams.aId + "/B/" + $stateParams.bId+ "/layout"; 
     } 
    }); 

Kiedy jestem w stanie AB (url byłoby somthing jak #/A/12/B/123) i wrócić za pomocą przycisku Wstecz przeglądarki lub przejścia. Aby zmiany adresu URL, stan AB został wyczyszczony, ale stan A nie jest wyświetlany ponownie. O ile mogę powiedzieć, że kontroler nie jest uruchamiany.

Więc jeśli jestem w A/12/B/123 i wracam do A/12 nic się nie dzieje, ale jeśli wrócę do A/13 (używając transitionTo), to renderuje.

W przykładowej aplikacji z projektu kątowego i routera ten scenariusz działa dobrze, więc myślę, że może być coś nie tak w mojej konfiguracji. Myślę, że warto wspomnieć, że na index.html mam ui-widok, który ładuje stan A, a szablon dla stanu A ma inny widok ui, który ładuje stan AB

Jeśli ktokolwiek mógłby pomóc, byłbym bardzo wdzięczny za to

+1

Wierzę, że jest nadal kwestią otwartą na to: https: // github .pl/angle-ui/ui-router/issues/52 –

+0

Tak, widziałem ten problem, ale opisane przeze mnie zachowanie działa dobrze w jego przykładowej aplikacji. http://angular-ui.github.io/ui-router/sample/ – Grig

+0

Czy możesz opublikować Plunkr, który demonstruje problem? Jest to dość standardowe zachowanie, które zazwyczaj działa dobrze we wszystkich przypadkach. –

Odpowiedz

0

Czy próbowali za pomocą tego:

$ state.reload()

jego metody, które zmuszają przeładowuje bieżący stan. Wszystkie postanawia są ponownie rozwiązany, zdarzenia nie są ponownie zwolniony, a kontrolery reinstantiated

To tylko aliasem dla:

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