2013-09-23 2 views
5

У меня есть установка приложения с 2-состояниями, A и AB сделано таким образом:AngularJS UI-маршрутизатор состояние не обновляется на спине

$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"; 
     } 
    }); 

Когда я нахожусь в состоянии AB (URL-адрес будет Somthing например, #/A/12/B/123) и вернуться с помощью кнопки «Назад» браузера или перехода к изменению URL-адреса, состояние AB очищается, но состояние «А» не отбрасывается. Насколько я могу судить, контроллер не запускается.

Итак, если я нахожусь в A/12/B/123 и возвращаюсь к A/12, ничего не происходит, но если я вернусь к A/13 (с помощью transitionTo), это сделает.

В примере приложения из проекта с угловым ui-маршрутизатором этот сценарий работает нормально, поэтому я думаю, что может быть что-то не так в моей настройке. Я думаю, что стоит упомянуть, что на index.html у меня есть ui-view, который загружает состояние A, а шаблон для состояния A имеет другой ui-view, который загружает состояние AB

Если бы кто-нибудь мог помочь, я был бы очень признателен

+1

Я считаю, что все еще остается открытым вопрос об этом: https: // GitHub .com/angular-ui/ui-router/issues/52 –

+0

Да, я видел эту проблему, но поведение, которое я описываю, хорошо работает в своем примере приложения. http://angular-ui.github.io/ui-router/sample/ – Grig

+0

Не могли бы вы опубликовать Plunkr, который демонстрирует проблему? Это довольно стандартное поведение, которое обычно отлично работает во всех случаях. –

ответ

0

вы пробовали использовать это:

$ state.reload()

Сво метод, который принудительно перезагружает текущее состояние. Все решает повторно разрешены, события повторно не уволят, и контроллеры пересоздан

Это просто псевдоним:

$state.transitionTo($state.current, $stateParams, { 
     reload: true, inherit: false, notify: false 
    }); 
Смежные вопросы