Данные родительских контроллеров очищаются при переходе между дочерними состояниями: AngularJS - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть 4 состояния, как показано ниже

$stateProvider.state('search', {
            url: '/search',
            controller: 'ControllerA',
            template: TemplateA
        }).state('results', {
            url: '/searchResult/:queryString',
            controller: 'ControllerA',
            template: TemplateA
        }).state('search.child1', {
            controller: 'ControllerChild1',
            template: TemplateChild1
        }).state('search.child2', {
            url: '/child2',
            controller: 'ControllerChild2',
            template: TemplateChild2
        });

.controller('ControllerA' function() {
   this.selectedItem = '';
});

Сводка о моих состояниях: В обоих состояниях 'search' и 'result' используются один и тот же контроллер и html.'search.child1' и 'search.child2' являются двумя дочерними состояниями поиска (это вкладка внутри страницы поиска).Когда пользователь запускает приложение по умолчанию, выбирается search.child1.

Постановка задачи:

  1. Когда при поиске пользователем какого-либо элемента selectedItem обновляется один изпеременная области видимости в ControllerA (внутри контроллера 'search').
  2. Когда пользователь переходит из состояния 'search.child1' в 'search.child2' selectedItem становится неопределенным, что находится в родительском состоянии.

Я не понимаю, почему это такпроисходит здесь, когда я перемещаюсь между дочерними состояниями, почему родительские переменные очищаются?Как предотвратить это?

Я пробовал следующие вещи

this.$state.go('search.child2', {}, { reload: 'search.child2' });

this.$state.transitionTo('search.child2', {}, { notify: false });
...