模态 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();
},
// ...
});
假设您从 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();
},
// ...
});