以下代码包含在我的“app.js”文件中,并在我的配置中用于配置$navigationProvider.doSomething()
。 Test1和Test3被警告,但我无法得到我的。$ get方法工作(任何Test2警报)。在我看来应该调用我的页面初始化,对吧?
// providers.js
angular.module('myapp.providers', []).provider('$navigation', function() {
var routes = {};
function test () {
alert(arguments);
};
alert('Test1');
this.$get = ['$rootScope', '$location',
function( $rootScope, $location) {
$rootScope.$on('$locationChangeSuccess', function () {
alert('Test2');
});
alert('Test2');
return {};
}];
this.doSomething = function () {alert('Test3')};
});
// app.js
var app = angular.module('myapp', [
'myapp.providers'
]).config(function ($locationProvider, $navigationProvider) {
$navigationProvider.doSomething();
$locationProvider.html5Mode(true);
});
编辑:
我能够通过在我的'myapp.providers'模块中添加.run(['$navigation'], function ($navigationProvider) {})
块来实现它。所以为了更多地指出我的问题,为什么没有自动初始化发生(因为我在app.js中配置提供程序)?是否还有其他解决方案可以让我的提供程序初始化?一个空的module.run() - 块似乎对我来说有点愚蠢!
答案 0 :(得分:0)
你在很大程度上回答了自己的问题。配置应在配置时进行,并在运行时进行实例化。否则配置阶段的价值是什么?