我在使用 Angular UI-Router Framework 时遇到了问题。我在另一个视图中有 2 个嵌套视图,每次我都更改为该"多视图"视图,我设置为子视图的两个控制器都在重新加载这两个的初始方法。因此,当我重新加载页面并且两个视图都更新时,它们都类似于双重更新。这导致这样一个事实,即其中一个控制器通过$http请求两倍的数据。我在控制器中定义的每个方法将执行两次。
是否有可能阻止其中一个视图的更新。我目前的建议是,每次加载新视图时,都会编译所有 ui-views,以便为 2 个视图编译两次。:/
主要内容:
....
<div ui-view></div>
....
我的子视图是这样的:
...
<div ui-view="view1"></div>
<div ui-view="view2"></div>
...
我的应用状态配置:
....
.state('model', {
url:"/model/{modelId}",
controller: 'modelCtrl',
templateUrl: 'partials/model.html'
})
.state('model.Overall', {
views: {
'view1': {
templateUrl: 'partials/view1/view.html',
controller: 'view1Ctrl'
},
'view2': {
templateUrl: 'partials/views2/view.html',
controller: 'view2Ctrl'
}
}
})
...
我不确定每个视图的确切用途,但是,如果您需要同时显示它们,您可以尝试让 modelCtrl 触发您需要在加载时发生的方法/函数,而不是子视图控制器。
但是,如果这些子视图正在切换,则可以'model'
设置为抽象状态:abstract: true
并有一个 ui-view <ui-view="chewy"></ui-view>
(我总是说耐嚼,因为它有点耐嚼中心?因此,您将有两个子状态:
.state('model.view1', {
views: {
'chewy': {
templateUrl: 'partials/view1/view.html',
controller: 'view1Ctrl'
}
}
})
.state('view2', {
views: {
'chewy': {
templateUrl: 'partials/views2/view.html',
controller: 'view2Ctrl'
}
}
}) ...