4

以下代码包含在我的“app.js”文件中,并在我的配置中用于配置$navigationProvider.doSomething(). Test1 和 Test3 收到警报,但我的 this.$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);
    });

编辑:

.run(['$navigation'], function ($navigationProvider) {})我可以通过向我的“myapp.providers”模块添加一个块来使其工作。所以要详细说明我的问题,为什么没有发生自动初始化(因为我在 app.js 中配置了提供程序)?是否有任何其他解决方案可以让我的提供程序初始化?一个空的 module.run()-block 对我来说似乎有点愚蠢!

4

1 回答 1

0

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

于 2013-08-08T03:58:01.403 回答