是否可以为同一视图使用两个控制器?最好用ui-router

时间:2016-05-12 17:44:42

标签: angularjs angularjs-scope angular-ui-router

我在Ui路由器中有多个嵌套视图。我想知道他们是否有可能共享一个控制器以获得相同的功能,然后拥有自己的控制器用于其他功能。我希望这个父控制器进行一些api调用,并存储一些范围变量,这样我就不必在每个控制器内单独进行这些调用。我知道我可以通过决心实现类似的功能,但是对于一种视图可以使用2个控制器吗?

以下是我的代码看起来像

的代码示例
.state('app.user', {
  url: '/user',
  resolve: {
    userData: ["UserService", function(UserService) {
      return UserService.getuser().then(function(profile) {
        UserService.profile = profile.data;
        UserService.currentId  = profile.data.user.id;
        return profile.data;
      });
    }]
  },
  views: {
    'content@': {
      templateUrl: ENVApp + '/views/user/profile.html?',
      controller: 'UserController'
    },
    'addresses@app.user': {
      templateUrl: ENVApp + '/views/partials/addresses?',
      controller: 'UserAddressController'
    }
  }
})

2 个答案:

答案 0 :(得分:3)

是的,我在大多数应用中执行此操作。在我的身体div上,我指定了一个名为appController的控制器,其中ng-controller =" appController为app"然后我可以在我的应用程序的任何视图中作为应用程序引用它。

答案 1 :(得分:0)

你可以做到

<div ng-controller="parentController">  
    <div ng-view></div>
</div>

parentController是相同功能的通用控制器,将为各个控制器更新ng-view