[英]Does Injecting a Dependency into a controller add the dependency to the scope?
[英]Injecting dependency in controller (not as argument)
我想在模式(ui.bootstrap)和普通视图(无模式)中使用控制器。 控制器用于添加事物-作为普通视图和模式。
要知道控制器是由模态视图还是普通视图使用,我在模态中使用resolve attr:
$modal.open({
resolve: {
inModal: function() {
return true;
}
}
//other
})
问题是要使用它,我需要将其注入控制器:
function myCtrl($scope, inModal) {
$scope.inModal = inModal;
}
但是这种依赖性在普通视图中不可用。 如果可用,我可以在控制器中注入inModal
吗?
function myCtrl($scope) {
//$scope.inModal = inject inModal if it is available
}
除了解析,您还可以将范围传递给$ modal选项:
$scope.inModal = true;
$modal.open({ scope: $scope });
然后在您的控制器中:
function myCtrl($scope) {
if($scope.inModal) {
...
}
}
当您将$ scope传递给$ modal时,$ modal将创建一个子作用域,该子作用域典型地从父作用域继承inModal。 在普通视图中调用控制器功能时,不会定义inModal。
您可以使用$ inject注入它,如下所示:
myCtrl.$inject = ['$scope', 'inModal'];
我已经做到了,并且工作正常。 以下是$ modal的代码。
$modal.open({
controller : "myCtrl",
resolve: {
inModal: function() {
return true;
}
}
})
控制器:
app.controller('myCtrl', function($scope, inModal) {
//you can directly use inModal or assign it to $scope property
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.