如何以不同的方式从控制器加载ui.bootstrap模块?

时间:2013-12-07 10:30:03

标签: javascript angularjs angular-ui-bootstrap

我有以下项目配置:

var app = angular.module('myApp', []);

app.config(['$routeProvider', function($routeProvider) {
                $routeProvider.when('/aaa',
                   {templateUrl: config.base_url + 'app/partials/aaa/index.html',
                    controller: 'AAACtrl'});
                $routeProvider.when('/bbb', 
                   {templateUrl: config.base_url + 'app/partials/bbb/index.html', 
                    controller: 'BBBCtrl'});
                $routeProvider.when('/ccc', 
                   {templateUrl: config.base_url + 'app/ccc/reportsView.html', 
                    controller: 'reportCtrl'});
                            }]);

您可以看到我没有加载ui.bootstrap模块。

reportCtrl看起来像:

app.controller('reportCtrl',  
    ['$scope', function($scope) { /**/}

根据此演示Plunker我想使用datepicker。但是,它需要将ui.bootstrap模块添加到app。但我不想添加到我的所有项目(以防止冲突)。我很有兴趣只在一个控制器中使用ui.bootstrap模块。

我使用codeigniter,每个控制器使用自己的标头。

我怎样才能做到这一点?

谢谢,

1 个答案:

答案 0 :(得分:1)

我想到的一件事是创建不同的模块和routeProvider。请注意,我们可以通过添加myApp来“扩展”父模块,以便使用服务/指令引用myApp

var appReport = angular.module('myAppReport', ['myApp','ui.bootstrap']);
//                                  ^^^          ^^^        
//                             new module     extends old one

  // we just split $routerProvider
  appReport.config(['$routeProvider', function($routeProvider) {
                $routeProvider.when('/ccc', 
               {templateUrl: config.base_url + 'app/ccc/reportsView.html', 
                controller: 'reportCtrl'});
                        }]);

因此myApp看起来像是:

var app = angular.module('myApp', []);

app.config(['$routeProvider', function($routeProvider) {
                $routeProvider.when('/aaa',
                   {templateUrl: config.base_url + 'app/partials/aaa/index.html',
                    controller: 'AAACtrl'});
                $routeProvider.when('/bbb', 
                   {templateUrl: config.base_url + 'app/partials/bbb/index.html', 
                    controller: 'BBBCtrl'});                   
                }]);