![](/img/trans.png)
[英]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.