Предположим, вы запускаете модальное окно, используя $ modal.open из угловой директивы.
Имеет ли модальное окно доступ к функциям, определенным в родительской директиве?
Код контроллера директивы
..
function parentFunction()
{
return 5;
}
$scope.showDialog = function()
{
var dialog = $modal.open({
controller: 'modalController',
...
}
Код 'modalController'
var val = parentFunction();
Он не будет иметь доступ к лексическому доступу, но есть два способа (которые я знаю) "передать данные" контроллеру, в зависимости от того, что имеет для вас больше смысла:
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
в modalController
:
.controller("modalController", function(parentFn){
parentFn();
});
если вы определили свой встроенный контроллер, тогда у него будет доступ к лексической области доступа:
function parentFn(){
}
var dialog = $modal.open({
controller: function modalController(){
parentFn();
},
// ...
});