我尝试使用hello.js将rdash-angular集成到ng-hello中,另请参阅ng-hello blog post。
页面加载时出现的错误是:
未捕获的ReferenceError:未定义helloProvider(匿名 功能)@ dashboard.min.js:2
我已经在bower.json中包含Hello和ng-hello并成功安装, 复制到
由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 为什么会这样?
答案 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;。