Angular js魔法字符串

时间:2014-10-14 23:33:49

标签: javascript angularjs

在棱镜中,什么是摆脱魔法弦的最佳方法,

例如,

//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获取数据

这种方法有什么缺点吗?

0 个答案:

没有答案