Angular provider $get未初始化

Angular provider $get not initialized

本文关键字:初始化 get provider Angular      更新时间:2023-09-26

以下代码包含在我的'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);
    });
编辑:

我能够通过添加.run(['$navigation'], function ($navigationProvider) {})块到我的"myapp"来获得它的工作。提供者的模块。那么,为了更具体地说明我的问题,为什么没有发生自动初始化(因为我在app.js中配置提供程序)?是否有其他解决方案来初始化我的提供者?一个空模块。run()块对我来说似乎有点愚蠢!

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