【发布时间】:2016-02-16 14:39:57
【问题描述】:
我正在尝试构建一个自定义模式服务来接受数据并使用这些输入生成一个模式;但是,当将控制器的文字标识符传递给模态的controller 属性时,我收到了未知的提供者错误是 Angular。
我的应用程序的其他地方有依赖注入;它只是失败了,在这里。我知道,关于 SO 处理这个问题有很多问题;但是,在我读过的那些中,我无法找到一个更通用的答案,这可能会开始为我指明正确的方向。
这是我的服务代码:
angular.module('app').service('CustomModalService', ['$uibModal', function ($uibModal) {
this.openCustomModal = function (size, title, message, action) {
var actionToPerformOnConfirm = action;
var modalInstance = $uibModal.open({
templateUrl: 'templates/CustomModal.html',
controller: 'CustomModalInstanceController',
controllerAs: 'vm',
size: size,
resolve: {
content: function () {
return {
title: title,
message: message
};
}
}
});
modalInstance.result.then(function (actionToPerformOnConfirm) {
console.log('something happened');
}.bind(this));
};
}]);
这是上面引用的模态控制器:
angular.module('app').controller('CustomModalInstanceController', function ($uibModalInstance, content) {
var vm = this;
vm.title = content.title;
vm.message = content.message;
$scope.confirmAction = function () {
$uibModalInstance.close();
};
$scope.cancelAction = function () {
$uibModalInstance.dismiss('cancel');
};
});
根据我对 Angular 的理解,这应该足够了。 如果控制器引用被删除,则此服务中一切正常,否则。
甚至还有this question(我遇到的所有问题的一个很好的总结)证实了我在网上看到的文档和众多示例;但是,我仍然收到未知的提供者错误。这个用户甚至问same question(再次,从我所见,我的代码是一个“正确”的光辉例子)!
为了说明两者都在同一个目录下,下面是目录结构图:
我需要从哪里着手解决这个问题?这是应用程序配置问题吗?
【问题讨论】:
-
未知提供者错误通常是由于找不到服务或控制器,您的服务和控制器在不同的目录中吗?
-
@ManuAntony 他们在同一个目录中,在这里。他们确实会被吐出到一个缩小的文件中。如果有帮助,会发布目录结构的图像吗?
-
这对您的应用如何将控制器拼凑在一起也会有所帮助?从外观上看,您的控制器在您的应用中未定义,如果您刚刚添加了控制器,请尝试重新启动您的开发环境
-
@ManuAntony 实际上,这是一个好问题。我对 Angular 场景比较陌生。最初的架构师似乎包含了一个
routes.js文件,其中包含对注入的$stateProvider的调用。在这里,模板被映射到控制器。奇怪的是我不必修改这个文件来包含我的服务(不知道这是否正常)。如果被控制者没有在这里注册,那会是罪魁祸首吗? -
我的问题可能听起来很傻,但是你能检查传入控制器的参数是否正确吗?
$uibModalInstance, content。或者更好的是,您可以删除控制器中的所有内容,只是一个空控制器,没有参数,看看您是否仍然收到错误?
标签: javascript angularjs