遵循 MVC 模式,一个控制器应该能够在 AngularJS 中处理多个视图。
例如,我有一个视图用于显示所有用户,一个视图用于创建新用户。我的 $routeProvider
(摘录)看起来像这样:
app.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/showusers', {
templateUrl: 'partials/showusers.html',
controller: 'userController'
}).
when('/createuser', {
templateUrl: 'partials/showusers.html',
controller: 'userController'
})
}]);
两个视图共享几种方法,例如检索所有用户属性。这些共享方法通过factory
.
(userController
摘录)目前看起来像这样,Users
工厂在哪里:
angular.module('supportModule').
controller('userController', function($scope, Users) {
var init = function(){
$scope.users = Users.getAll();
$scope.attributes = Users.getAttributes();
}
init();
})
Users.getAll();
问题是:当我在createuser
视图中时,我不需要请求。
当然,我可以通过使用$location
,$routeProvider
或纯 JS 轻松解析路由,然后有条件地调用方法 - 但我认为 Angular 中有一种更优雅和更有效的方法 :)
就像在典型的 MVC 框架中,一个控制器有很多动作 -每个视图一个。
所以我的问题是:
如何优雅地基于控制器中的视图调用方法,该控制器控制多个视图?