在我的.config中,我有一个实例化一对controller-router
的路由器:
angular.module('reporting', ['ng', 'ngRoute', 'ngResource', 'reporting.directives', 'reporting.controllers', 'reporting.config', 'ngGrid', 'ui.bootstrap'])
.config(["$routeProvider", "$provide", function ($routeProvider, $provide) {
$routeProvider
.when('/dealersReq', {
templateUrl: 'reporting/partials/dealersReqs.html',
controller: 'DealersCtrl'
})
.when('/lmtReq', {
templateUrl: 'reporting/partials/lmt.html',
controller: 'lmtCtrl'
})
.when('/leadsCreated', {
templateUrl: 'reporting/partials/leadsCreated.html',
controller: 'LeadsCreatedCtrl'
})
...
但每个控制器共享相同的initialization code
(想象它像构造函数)在rootScope中设置一些变量,如标题和<view>
之外的某些控制器的其他有用信息:
.controller('DealersCtrl', ['$scope','$rootScope', 'CONFIG',
function($scope, $rootScope, CONFIG) {
//////////// duplicated code
var key = 'qtsldsCrtSncheQ';
$rootScope.openReport.key = key;
$rootScope.openReport.title = CONFIG.reports['' + key].title;
//////////// duplicated code
console.log('Initialized! Now I do what a controller should really do');
}]);
我想要做的是找到一种方法将该代码(目前复制到每个控制器中)移动到更聪明,更整洁的东西。例如,在路由实例化期间路由可以调用的东西。当然每个控制器应该有一个不同的密钥,但实际上这个密钥可能就是控制器名称。我真的不知道如何改善这一点。有什么建议吗?
答案 0 :(得分:0)
为什么不在$rootScope
上创建一个方法,然后从每个控制器调用它,即:$rootScope.init()
。
答案 1 :(得分:0)
您可以将服务用于共享代码,但应避免使用$ rootScope https://stackoverflow.com/a/16739309/3068081