假设您使用角度指令中的$ modal.open启动模态窗口。
模态窗口是否可以访问使用父指令定义的函数?
指令控制器代码
..
function parentFunction()
{
return 5;
}
$scope.showDialog = function()
{
var dialog = $modal.open({
controller: 'modalController',
...
}
' modalController'代码
var val = parentFunction();
答案 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();
},
// ...
});