簡體   English   中英

Angularjs [$ injector:unpr]未知的提供程序外部模塊

[英]Angularjs [$injector:unpr] Unknown provider external module

我有一個包含模塊化angularjs子應用程序的項目。 子應用程序位於相對於根應用程序文件夾的自己的文件夾中。 問題是我想通過涼亭包括一個外部模塊(衛星化器)。 該模塊已正確下載,並且Bower組件通過gulp / wiredep注入了html。 到目前為止一切都很好。

帶有控制器的應用程序的結構如下:

(function () {
'use strict';

angular
    .module('foo.bar')
    .filter('orderObjectBy', function () {
        return function (input, attribute) {
            if (!angular.isObject(input)) return input;

            var array = [];
            for (var objectKey in input) {
                array.push(input[objectKey]);
            }

            array.sort(function (a, b) {
                a = parseInt(a[attribute]);
                b = parseInt(b[attribute]);
                return a - b;
            });
            return array;
        }
    })
    .controller('FoobarController', FoobarController);

FoobarController.$inject = ['logger', '$q', 'dataservice', '$stateParams', 'fooBarHandler', '$location', 'satellizer'];
/* @ngInject */
function FoobarController(logger, $q, dataservice, $stateParams, fooBarHandler, $location, $authProvider) {
    var vm = this;
    fooBarHandler.includeIn(vm, dataservice);

    vm.authorize = authorize;


    }        
}

問題是,為簡潔起見,Angular一直在說satellizer是未知提供程序(Unknown provider:satellizerProvider <-satellizer <-FooBarController),我省略了控制器實現中的許多代碼。

我還嘗試通過數組依賴關系來連接依賴關系,如下所示:

 angular
    .module('foo.bar', ['satellizer'])
    .filter('orderObjectBy', function () {
        return function (input, attribute) {
            if (!angular.isObject(input)) return input;

            var array = [];
            for (var objectKey in input) {
                array.push(input[objectKey]);
            }

            array.sort(function (a, b) {
                a = parseInt(a[attribute]);
                b = parseInt(b[attribute]);
                return a - b;
            });
            return array;
        }
    })

但仍然沒有運氣。

得到它的工作。 在挖槽衛星源之后,我意識到我需要從提供商那里注入。 Satellizer已將其提供程序定義為“ $ auth”。 所以我換線后

FooBarController.$inject = ['logger', '$q', 'dataservice', '$stateParams', 'fooBarHandler', '$location', 'satellizer];

FooBarController.$inject = ['logger', '$q', 'dataservice', '$stateParams', 'fooBarHandler', '$location', '$auth];

有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM