模态 window 的控制器可以访问父控制器中的函数吗

Can the controller of a modal window access functions in parent controller

假设您从 angular 指令中使用 $modal.open 启动模态 window。

模态 window 是否可以访问使用父指令定义的函数?

指令控制器代码

..
function parentFunction()
{
     return 5;
}

$scope.showDialog = function()
{
     var dialog = $modal.open({
     controller: 'modalController',
     ...
}

'modalController'代码

var val = parentFunction();

它没有词法作用域访问权限,但有 2 种方法(据我所知)"pass data" 到控制器,具体取决于对您来说更有意义的方法:

1) 通过 $scope:

$scope.parentFn = function parentFn(){
};

var dialog = $modal.open({
     controller: 'modalController',
     scope: $scope,
     //...
});

2) 通过 resolve:

function parentFn(){
}

var dialog = $modal.open({
     controller: 'modalController',
     resolve: {
       parentFn: function(){
         return parentFn;
       }
     },
     // ...
});

然后你可以获得 parentFn 作为局部注射剂进入 modalController:

.controller("modalController", function(parentFn){
   parentFn();
});

或者...

如果您定义了内联控制器,那么它将具有词法范围访问权限:

function parentFn(){
}

var dialog = $modal.open({
     controller: function modalController(){
        parentFn();
     },
     // ...
});