我正在使用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控制器运行,然后我的实际控制器运行。
我不希望联系人和列表控制器运行。
答案 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')