Angular UI-Router多个视图,不更新每个

时间:2016-01-19 14:31:10

标签: javascript angularjs routing angular-ui-router

我遇到了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'
  }
}
})
...

1 个答案:

答案 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'
    }
  }
 }) ...