Angularjs 当使用angular ui路由器时,控制器的合适结构是什么?
在使用angular ui router之前,一个控制器始终支持多个路由器和视图,例如: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'
$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.