在子状态之间导航时,将清除“父控制器”数据:AngularJS

时间:2019-02-07 12:55:06

标签: angularjs angular-ui-router

我有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 = '';
});

关于我的状态的摘要: “搜索”和“结果”状态都使用相同的控制器和html。 “ search.child1”和“ search.child2”是2个子搜索状态(它们是搜索页面中的标签)。用户默认启动应用程序时,将选择search.child1。

问题陈述:

  1. 当用户搜索某些项目“ selectedItem”时,将更新以下项目之一 ControllerA中的作用域变量(在“搜索”控制器内部)。
  2. 当用户从状态“ search.child1”移至“ search.child2”时,selectedItem 将会变为未定义状态,处于父状态。

我不明白为什么会在这里发生,当我在子状态之间移动时,为什么要清除父变量?如何防止它发生?

我尝试了以下事情

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

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

0 个答案:

没有答案