在棱镜中,什么是摆脱魔法弦的最佳方法,
例如,
//app.js
angular.module('starter', ['ionic', 'starter.controllers', 'starter.services'])
//accountController.js
angular.module('starter.controllers')
.controller('AccountCtrl',
function($scope) {
}
);
angular.module('starter')
.config(function config($stateProvider, $urlRouterProvider) {
$stateProvider.state($area.state, {
url: '/account',
views: {
'tab-account': {
templateUrl: 'templates/tab-account.html',
controller: 'AccountCtrl'
}
}
});
我正在考虑改变,
//constants.js
var MODULE_STARTER = function(){return 'starter';};
var MODULE_CONTROLLERS = function(){return 'starter.controllers';};
var MODULE_SERVICES = function(){return 'starter.services';};
//app.js
angular.module(MODULE_STARTER(), ['ionic', MODULE_CONTROLLERS(), MODULE_SERVICES()])
angular.module(MODULE_CONTROLLERS, []);
//accountController.js
var ACCOUNT_CONTROLLER = function() {
var $area = {};
$area.url = '/account';
$area.state = 'tab.account';
$area.controllerName = "AccountCtrl";
$area.stateConfig = function config($stateProvider, $urlRouterProvider) {
$stateProvider.state($area.state, {
url: $area.url,
views: {
'tab-account': {
templateUrl: 'templates/tab-account.html',
controller: $area.controllerName
}
}
});
};
return $area;
};
angular.module(MODULE_STARTER())
.config(ACCOUNT_CONTROLLER().stateConfig);
angular.module(MODULE_CONTROLLERS())
.controller(ACCOUNT_CONTROLLER().controllerName,
function($scope) {
}
);
所以重点是,当我引用相同的字符串值时,我不必重复魔术字符串,重构也会更容易。
此外,如果我想引用帐户控制器或其重定向的网址,我总是可以从ACCOUNT_CONTROLLER获取数据
这种方法有什么缺点吗?