【发布时间】:2014-07-10 15:07:51
【问题描述】:
这个依赖注入有什么问题?每次我将 modalController 注入......好吧,任何东西......我都会遇到注入器错误。我已经将 js 文件作为脚本引用包含在内,并且我引用了我的模态模块。这是实际的错误:
错误:[$injector:unpr] http://errors.angularjs.org/1.3.0-beta.13/$injector/unpr?p0=modalControllerProvider%20%3C-%20modalController
personnelModule.controller('PersonnelController', ['$scope', 'personnelFactory','modalController', function($scope, personnelFactory, modalController){
personnelFactory.getPersonnel().then(function(personnel){
$scope.personnel = personnel;
$scope.events = {};
$scope.events.addPerson = function() {
$modal.open({
templateUrl: '../SiteAssets/views/ModalTemplate.html',
controller: modalController
});
};
});
}]);
modalModule.controller('modalController', ['$scope', '$modalInstance', function($scope, $modalInstance){
$scope.ok = function () {
alert('ok clicked');
$modalInstance.dismiss('canceled');
};
$scope.cancel = function () {
alert('cancel clicked');
$modalInstance.dismiss('canceled');
};
}]);
【问题讨论】:
-
也许你还没有注入
modalModule作为personnelModule的依赖项?实例化personnelModule时,您将执行angular.module("personnelModule", ["modalModule"]),以使modalController可用(假设您将modalModule实例化为angular.module("modalModule", []))。 -
我的模块如下所示: var modalModule = angular.module('modal', ['ui.bootstrap']);和 var personModule = angular.module('personnel', ['skills', 'modal', 'ui.bootstrap']);此外,我可以成功地在该模块中注入工厂。如果我尝试在同一个模块中注入,这也不起作用。
-
看起来应该可以正常工作!我能想到的唯一另一件事是加载 js 文件的顺序。也许您在
personnelModule之前初始化您的modalModule以便它存在并且在初始化personnelModule时不会引发错误,但也许您的personnelController在声明modalController之前初始化?我只是假设这一点,因为您的模块存储在变量中的事实暗示您可能会将同一模块中的内容分散到不同的文件中。 -
附带说明,如果只需要设置modal的控制器可以使用
controller: 'modalController' -
我将我的模块存储在变量中,因为我是新手,这就是谷歌教程中教授的方式,但我实际上将与模块相关的所有内容保存在同一个文件中。
标签: angularjs