我的父控制器也使用子角度ui.router运行

时间:2017-03-16 22:56:27

标签: angularjs

我正在使用ui.router

以下是示例代码:

$stateProvider
    .state('contacts', {
        url: '/contacts',
        templateUrl: './home/contacts.html',
        controller: 'contactController'
    })
    .state('contacts.list', {
        url: '/list',
        templateUrl: './home/list.html',
        controller: 'listController'

    })
    .state('contacts.list.accounts', {
        url: '/accounts',
        templateUrl: './home/account.html',
        controller: 'accountController'
    })

list.html在两个div中有两个ng-controller。

所以当我去$ state.go('contacts.list.account')

然后我的contact.html控制器运行,如果我在页面然后我的列表两个ng控制器运行,然后我的实际控制器运行。

我不希望联系人和列表控制器运行。

1 个答案:

答案 0 :(得分:0)

那是因为你的状态是使用'{3}}中的陈述的'点符号'嵌套(没有双关语)。

取自文件:

  

当应用程序处于特定状态时 - 当状态为时   “活跃的” - 它的所有祖先国家也是隐含的活跃。

在您的实例中,当“contacts.list.accounts”状态处于活动状态时,“contacts.list”状态 也是隐式活动的,因为它是父状态 “contacts.list.accounts”。 “contacts”状态也是如此,因为“contacts.list”状态是活动的,所以它也是隐式激活的。

如果您不希望其他状态也处于活动状态,请通过将状态更改为以下状态使状态成为父状态:

.state('accounts', {
    url: '/accounts',
    templateUrl: './home/account.html',
    controller: 'accountController'
});

并重新引用$state.go('contacts.list.account')$state.go('accounts')