【问题标题】:Angularjs [$injector:unpr] Unknown provider external moduleAngularjs [$injector:unpr] 未知的提供者外部模块
【发布时间】:2016-02-10 11:50:37
【问题描述】:

我有一个由模块化 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 是未知提供者(未知提供者: satellizerProvider

我也尝试通过数组依赖来连接依赖,如下所示:

 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;
        }
    })

但还是没有运气。

【问题讨论】:

  • 试试这个angular.module('foo.bar', ['satellizer'])
  • 我希望你也将 satellizer 导入到你的 html 文件中。
  • 是的,我在我的 html 文件中导入了 satellizer。通过基于 bower.json 的 gulp 构建进行连接。我也尝试通过数组依赖包含 satellizer,但是 satellizer 变量未定义
  • 你配置了吗?如angular.module('foo.bar', ['satellizer']).config($authProvider){ $authProvider.provider({ })}。然后在你的控制器中使用它。喜欢$auth.authenticate(provider)
  • 不,我之前没有配置它,但我根据您的评论尝试了它,仍然没有运气。 $auth 变量仍未定义。

标签: angularjs


【解决方案1】:

搞定了。 在挖掘了 satellizer 的来源后,我意识到我需要从提供者那里注入。 Satellizer 已将其提供者定义为“$auth”。所以在我换行之后

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

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

成功了

【讨论】:

    猜你喜欢
    • 2014-10-01
    • 2023-03-08
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 2016-08-13
    • 2014-10-05
    相关资源
    最近更新 更多