1

我想在模态(ui.bootstrap)和普通视图(没有模态)中使用控制器。控制器用于添加东西 - 作为普通视图和模式。

要知道控制器是由模态视图还是普通视图使用,我在模态中使用解析属性:

$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
}
4

2 回答 2

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 
});
于 2015-02-08T16:38:23.303 回答
0

您可以将范围传递给 $modal 选项,而不是解析:

   $scope.inModal = true;
   $modal.open({ scope: $scope });

然后在你的控制器中:

function myCtrl($scope) {
    if($scope.inModal) {
       ...
    }
}

当您将 $scope 传递给 $modal 时,$modal 将创建一个子范围,该子范围在原型上从父范围继承 inModal。当在普通视图中调用控制器函数时,不会定义 inModal。

于 2015-01-27T15:09:20.120 回答