好的,我在 Angular 和 ui-router 方面有相当多的经验,但是在我的应用程序架构方面遇到了问题。我有一些状态,例如:
main.module.js
.state('main', {
abstract: true,
controller: 'MainCtrl',
template: '<div ui-view />'
}).state('main.clients', {
url: '/clients/:id',
views: {
list: {controller: 'ClientListCtrl', templateUrl: 'client-list.html'},
detail: {controller: 'ClientDetailCtrl', templateUrl: 'client-detail.html'}
}
}.state('main.services', {
url: '/services/:id',
views: {
list: {...},
detail: {...}
}
}
main.html
<div>
<div ui-view='list'></div>
<div ui-view='detail'></div>
</div>
客户端列表.html
<ul>
<li data-ng-click='$state.go('main.clients({id: client.id})'
data-ng-repeat='client in clients'>
{{client.name}}
</li>
</ul>
这一切似乎都运行良好,并且如我所料地填充了视图。我的主要问题是,当我处于main.clients
状态并且用户单击客户端名称时,$state.go(...)
火灾,它重新初始化ClientListCtrl
and ClientDetailCtrl
,即使状态实际上没有改变(嗯,:id
url 的部分确实) .
我是否滥用了多个视图?建议改变架构吗?只是试图围绕如何以最有效的方式构建它,并且在这种情况下控制器重新初始化似乎没有必要,但我可能遗漏了一些东西。谢谢!