Есть несколько вещей, которые вы можете сделать, чтобы получить элемент директивы.
Элемент по событию
Если вам нужно передать элемент по событию, вы можете создать функцию обратного вызова, который может передать элемент обратно. Если вам не нужна ссылка на него все время, это предпочтительный метод.
В возврате объекта в директиве, добавить что-то вроде
scope:{
elementclicked: "&"
}
В шаблоне вашей директивы, вы можете добавить
<....... ng-click="ElementClicked(event)"........>
в контроллере директивы, теперь вы можете обработать щелчок и сдать результаты
$scope.ElementClicked = function ($event) {
if ($scope.elementclicked != undefined) {
elementclicked({ event: $event });
}
}
Теперь вы передаете свой обратный вызов, как и любой другой, в d директива.
<yourDirective elementclicked="MyFunction(event)" ....>
элемент при связывании
Если нужна ссылка на момент создания, вы можете сделать это, как хорошо. Если вы перейдете в структуру данных, такую как настройки, вы можете установить ее в событии связывания.Когда вы свяжетесь с директивой, просто установите элемент.
scope:{
settings:"="
},
link:function(scope,element){
scope.$watch('settings',function(){
if(scope.settings!=undefined){
scope.settings.element=element;
}
}
}
Это будет следить за тем, когда настройки связаны и установить свойство элемента. Большой недостаток заключается в том, что вы добавляете свойство к переданному объекту, но если оно предназначено для директивы внутри директивы или это просто ваш проект, все должно быть хорошо.
Другой способ сделать это должен был бы использовать первый метод и создать обратный вызов elementlinked (element) и запустить его после связывания области.
Вам вообще не нужна область, если вы знаете идентификатор элемента –
Но как оно получается? – estus
позвольте мне перефразировать вопрос, вы используете Batarang? –