模态窗口的控制器可以访问父控制器中的功能

时间:2015-06-25 14:05:01

标签: javascript angularjs angular-bootstrap

假设您使用角度指令中的$ modal.open启动模态窗口。

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

指令控制器代码

..
function parentFunction()
{
     return 5;
}

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

' modalController'代码

var val = parentFunction();

1 个答案:

答案 0 :(得分:2)

它不会有词法范围访问,但有两种方式(我知道)将“传递数据”传递给控制器​​,具体取决于对你更有意义:

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();
     },
     // ...
});