我想在模态(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
}
答案 0 :(得分:0)
您可以将范围传递给$ modal选项,而不是解决方案:
$scope.inModal = true;
$modal.open({ scope: $scope });
然后在你的控制器中:
function myCtrl($scope) {
if($scope.inModal) {
...
}
}
当您将$ scope传递给$ modal时,$ modal将创建一个子范围,该范围原型从父范围继承inModal。在普通视图中调用控制器函数时,不会定义inModal。
答案 1 :(得分:0)
您可以使用$ 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
});