我遇到了Angular UI-Router Framework的问题。 我在另一个中有2个嵌套视图,每次都改为#34;多视图"查看,我设置为子视图的两个控制器都在重新加载两者的初始方法。因此,当我重新加载页面并更新两个视图时,它们都是双重更新的。这导致事实,其中一个控制器通过$ http两次请求一些数据。我在控制器中定义的每个方法都将执行两次。
是否有可能阻止其中一个视图的更新。 我目前的建议是,每次加载一个新视图时,所有ui-views都会被编译,因此它会为2个视图编译两次。 :/
主HTML:
....
<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'
}
}
})
...
答案 0 :(得分:0)
我不确定每个视图的确切含义但是,如果你需要同时显示它们,你可以尝试让modelCtrl触发你需要在加载时发生的方法/函数而不是子视图控制器。
但是,如果正在切换这些子视图,您可以将'model'
设置为抽象状态:abstract: true
并拥有一个ui-view <ui-view="chewy"></ui-view>
(我总是说耐嚼,因为它&# 39;一种耐嚼的中心?)。那么你将有两个子状态:
.state('model.view1', {
views: {
'chewy': {
templateUrl: 'partials/view1/view.html',
controller: 'view1Ctrl'
}
}
})
.state('view2', {
views: {
'chewy': {
templateUrl: 'partials/views2/view.html',
controller: 'view2Ctrl'
}
}
}) ...