为什么没有定义角度提供者?

时间:2015-09-03 08:20:19

标签: angularjs

我尝试使用hello.jsrdash-angular集成到ng-hello中,另请参阅ng-hello blog post

页面加载时出现的错误是:

  

未捕获的ReferenceError:未定义helloProvider(匿名   功能)@ dashboard.min.js:2

我已经在bower.json中包含Hello和ng-hello并成功安装, 复制到

  • SRC /组件/你好
  • 的src /组件/ NG-你好

由rdash-angular定义的app结构缩小供应商脚本并在文件lib / js / main.min.js中引用它们,然后缩小应用程序源文件并在文件js / dashboard.min.js中引用

的index.html

  <!-- SCRIPTS -->
  <!-- build:js lib/js/main.min.js -->
  <script type="text/javascript" src="components/angular/angular.min.js"></script>
  <script type="text/javascript" src="components/angular-bootstrap/ui-bootstrap-tpls.min.js"></script>
  <script type="text/javascript" src="components/angular-cookies/angular-cookies.min.js"></script>
  <script type="text/javascript" src="components/angular-ui-router/release/angular-ui-router.min.js"></script>
  <script type="text/javascript" src="components/hello/dist/hello.all.min.js"></script>
  <script type="text/javascript" src="components/ng-hello/dist/ng-hello.min.js"></script>
  <!-- endbuild -->
  <!-- Custom Scripts -->
  <script type="text/javascript" src="js/dashboard.min.js"></script>

NG-hello.js

(function (hello) {
    angular.module('ngHello', [])
        .provider('hello', function () {
            this.$get = function () {
                return hello;
            };

            this.init = function (services, options) {
                hello.init(services, options);
            };
        });
})(hello);

module.js

angular.module('RDash', ['ui.bootstrap', 'ui.router', 'ngCookies', 'ngHello']);

routes.js

'use strict';

/**
 * Route configuration for the RDash module.
 */
 angular.module('RDash').config(['$stateProvider', '$urlRouterProvider', helloProvider,
     function($stateProvider, $urlRouterProvider, helloProvider) {

         helloProvider.init({
               google: '0123456789MYAPPTOKEN.apps.googleusercontent.com'
         });

         // For unmatched routes
         $urlRouterProvider.otherwise('/');

         // Application routes
         $stateProvider
             .state('index', {
                 url: '/',
                 templateUrl: 'templates/dashboard.html'
             })
             .state('tables', {
                 url: '/tables',
                 templateUrl: 'templates/tables.html'
             });
     }
 ]);

如前所述,我得到的错误是未定义helloProvider 为什么会这样?

2 个答案:

答案 0 :(得分:1)

您的模块定义采用数组中模块的字符串表示形式,后跟一个接受这些字符串作为输入参数的函数。

在下一行中,您应该提供一个字符串,而不是一个变量,即:

angular.module('RDash').config(['$stateProvider', '$urlRouterProvider', helloProvider,

应该是

angular.module('RDash').config(['$stateProvider', '$urlRouterProvider', 'helloProvider',

答案 1 :(得分:1)

在注入示波器时,我相信你应该像这样包装它&#39; helloProvider&#39;。

'use strict';

/**
 * Route configuration for the RDash module.
 */
 angular.module('RDash').config(['$stateProvider','$urlRouterProvider', 'helloProvider',
 function($stateProvider, $urlRouterProvider, helloProvider) {

     helloProvider.init({
           google: '0123456789MYAPPTOKEN.apps.googleusercontent.com'
     });

     // For unmatched routes
     $urlRouterProvider.otherwise('/');

     // Application routes
     $stateProvider
         .state('index', {
             url: '/',
             templateUrl: 'templates/dashboard.html'
         })
         .state('tables', {
             url: '/tables',
             templateUrl: 'templates/tables.html'
         });
 }
]);

同样在定义提供者时,可以使用详细名称来定义,例如&#39; helloProvider&#39;。