Я столкнулся с ситуацией, которая кажется противоположной любому подобному вопросу здесь, в StackOverflow.
У меня есть директива <scroll>
, которая просто оборачивает любое содержимое в какой-то прокручиваемый div
. Выглядит это примерно так:
.directive('scroll', ['$document','$parse', function ($document,$parse) {
return {
restrict: 'E',
replace: true,
transclude: true,
scope:false,
template:
'<div class="scroll">' +
'<div class="content" data-ng-transclude>' +
'</div>' +
'</div>',
link: function (scope, element, attr) {
// some code here....
}
};
}]);
Это прекрасно работает само по себе.
Теперь у меня есть другая директива под названием <editor>
, которая имеет изолированную область действия и использует <scroll>
в своем шаблоне. <editor>
выглядит примерно так:
.directive('editor', ['$document', function ($document){
return {
restrict: 'EA',
replace: true,
transclude: false,
scope:true,
template:
'<div>' +
'....<scroll>....</scroll>....' +
'</div>',
link: function (scope, element, attrs) {
.....
}
};
}]);
Теперь вот в чем дело: мне нужно получить доступ к области <editor>
из функции ссылки <scroll>
(где написано "здесь какой-то код"), но по какой-то причине я не могу. Переменная scope
в функции ссылки <scroll>
практически пуста, и scope.$parent
дает мне указанный выше контроллер, пропуская <editor>
, который должен мешать.
Я пытался играть с ng-transclude
в разных местах в <editor>
и пытался использовать $emit
, и я действительно ничего не знаю об этом - я думаю, что изоляция области действия изолирует "меня и все, что ниже меня" от того, что выше, но кажется, что область действия изоляция просто убирает "меня" из дерева областей видимости...
Надеюсь, это достаточно ясно, спасибо.
link
внутренней директивы срабатывает перед родительским, поэтому кажется, что я не могу получить доступ к области действия родителя изlink
функция, но может из разметки с{{}}
. Возможно, решение состоит в том, чтобы внутренняя директива$watch
была готова для верхней директивы, прежде чем использовать$parse(...)(scope)
для доступа к ней. - person motig88   schedule 05.08.2013