Angularjs 当使用angular ui路由器时,控制器的合适结构是什么?

Angularjs 当使用angular ui路由器时,控制器的合适结构是什么?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,在使用angular ui router之前,一个控制器始终支持多个路由器和视图,例如: $routeProvider. when('/posts', { templateUrl: 'views/posts/list.html' }). when('/posts/create', { templateUrl: 'views/posts/create.html' }). $stateProvider .state('posts'

在使用angular ui router之前,一个控制器始终支持多个路由器和视图,例如:

$routeProvider.
    when('/posts', {
        templateUrl: 'views/posts/list.html'
    }).
    when('/posts/create', {
        templateUrl: 'views/posts/create.html'
    }).
$stateProvider
  .state('posts', {
    abstract: true,
    url: '/posts',
    templateUrl: 'views/posts/list.html',
    controller: 'PostsCtrl'
  })
  .state('posts.detail', {
    url: '/:postId',
    templateUrl: 'views/posts/detail.html',
    controller: 'PostsDetailCtrl'
  })
一个对象的所有视图共享一个控制器:

app.controller('PostsCtrl', function($scope) {
  $scope.create = function() {
    // ...
  }
  $scope.list = function() {
    // ...
  }
});
和视图中的初始数据:

<div data-ng-controller="PostsController" data-ng-init="list()">
  ...
</div>
分离控制器似乎不是一种好的设计模式


那么,有没有更好的建议来构建控制器呢?

现在回答有点晚了,但当我努力寻找答案时,我还是把它贴出来吧

我同意Nate的意见,在大多数情况下,你应该让控制器尽可能小,也就是说,你应该为每个州写一个单独的控制器。但是,如果您发现自己处于这样一种情况,即认为最好对父视图和子视图使用相同的控制器,那么您可以在子视图中省略
控制器
选项。然后,此视图将使用父视图的状态。这一点可以在中阅读。举个小例子:

app.js partials/test.html
我希望这对任何人都有帮助

我不确定问题是什么。。。?控制器应针对其控制的UI部分编写。越小、越专注越好(显然,在某种程度上,我发现大约5-6种方法都是理想的大小)。
app.controller('testController', ['$scope', function($scope){
    $scope.message= 'This comes from testController';
}]);

app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider ,$urlRouterProvider) {
    $stateProvider
    .state('test', {
      url: '/test',
      templateUrl: 'partials/test.html',
      controller: 'testController'
    })
    .state('test.child', {
      url: '/child',
      templateUrl: 'partials/test2.html'
    });
}]);
<div>
    Test.html: {{message}}
    <div data-ui-view></div>
</div>
<div>
    Test2.html: {{message}} as well.
</div>
Test.html: This comes from testController
Test2.html: This comes from testController as well.