[英]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.