Angular provider $ get not initialized

时间:2013-05-22 15:03:00

标签: javascript angularjs

以下代码包含在我的“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() - 块似乎对我来说有点愚蠢!

1 个答案:

答案 0 :(得分:0)

你在很大程度上回答了自己的问题。配置应在配置时进行,并在运行时进行实例化。否则配置阶段的价值是什么?