如何在AngularJS中定义模块范围的变量或常量?

时间:2015-10-09 14:31:11

标签: angularjs

我的AngularJS模块包含我需要在.config()以及多个控制器中使用的变量。

寻找一种方法将变量/常量附加到模块,可以从config()/ controller()/ run()处理,而且操作简单。我试过......

  • 常数 - 他们工作!但是,它们生活在全球范围内,模块相互衔接,因此这是不可行的。事实上,我认为constant()是全局的,没有更清楚地记录,示例代码广泛使用它与本地(未加前缀)变量名称。
  • 服务 - 在config()时间不存在
  • $ scope - 在config()时间不存在
  • 继承 - JS和Angular都没有用于传统继承,也许有一种方法可以在可以从config()访问的原型中设置变量......?

丑陋的代码示例,使用常量:

angular.module('mod.boat_groups', ["pennantapp"])
    .constant('REST_base', 'boat_groups')
    .constant('list_name', 'boat_groups')
    .constant('item_name', 'boat_group')
    .config(['$stateProvider', 'list_name', 'item_name',
        function($stateProvider, list_name, item_name) {
            'use strict';
            $stateProvider
                .state( list_name , {
                    url: '/'+list_name,
                    views: {
                        'main': {
                            templateUrl: 'app/mod/'+list_name+'/bg.tpl.html',
                            controller: 'BoatGroupsViewCtrl as ctrl'                        }
                        }
                })
                .state( item_name + '_view', {
                    url: '/'+list_name+'/:id/view',
                    views: {
                        'navbar': {
                            templateUrl: 'app/app-navbar.tpl.html'
                        },
                        'main': {
                            templateUrl: 'app/mod/'+list_name+'/bg-view.tpl.html',
                            controller: 'BoatGroupCtrl as ctrl'                     }
                        }
                })...

angular.module('mod.boat_groups')
    .controller('BoatGroupsViewCtrl', ['Restangular', 'REST_base', '$location', 'authenticationService',
        function(Restangular, REST_base, $location, authenticationService) {
            'use strict';
            var self = this;
            self.restangular = Restangular.all(REST_base)
            ...
        }]);

angular.module('mod.boat_groups')
    .controller('BoatGroupCtrl', ['Restangular', 'REST_base', 'list_name', '$location', 'authenticationService', '$stateParams',
        function(Restangular, REST_base, list_name, $location, authenticationService, $stateParams) {
            'use strict';
            var self = this;
            self.restangular = Restangular.all(REST_base)
            ...

一些类似的问题......

0 个答案:

没有答案