2016-04-26 5 views
2

Я использую директиву для размещения многоточия при переполнении текста, называемой угловым эллипсисом. Если есть достаточно места для текста, угловое эллипсис не применяется .... Мне нужно знать, применяется ли многоточие к некоторому тексту или нет.AngularJS: Как получить доступ к атрибутам, определенным внутри директивы снаружи

Глядя в код директивы я могу видеть, что он имеет атрибут, который, кажется, соответствует тому, что я ищу - attribute.isTruncated:

compile: function(elem, attr, linker) { 

    return function(scope, element, attributes) { 
     /* State Variables */ 
     attributes.isTruncated = false; 

Это также, кажется, что-то подобное, установив «данных переполнена» атрибут элемента, как таким образом:

element.attr('data-overflowed', 'false'); 

Вот ссылка на код для директивы, это не слишком сложно или долго:

https://github.com/dibari/angular-ellipsis/blob/master/src/angular-ellipsis.js

Мне интересно, могу ли я получить доступ к любому из этих атрибутов из моего контроллера, и если да, то как? Простите меня, если это очевидно, но я совершенно новый для директив ...

+0

Можете ли вы попробовать 'angular.element (element) .attr ('data-overflowed')'? – floribon

+0

Предполагаю, вы имеете в виду, что внутренний элемент является идентификатором div? то есть. angular.element ('div-name'). attr ('data-overflowed')? Я попробовал это и получил ошибку: «Поиск элементов с помощью селекторов не поддерживается jqLite ' –

ответ

1

Помните «JS» в AngularJS.
Если вы можете найти элемент по его id или class атрибут, то вы должны быть в состоянии запроса его с простой JavaScript, с помощью querySelector и getAttribute:

document.querySelector("#element-id").getAttribute('data-overflowed'); 

Это не идеальное решение, потому что в некоторых средах тестирования, вам не гарантируется наличие интерфейса document (вот почему у Angular есть обертка $document), но он получает то, что вам нужно (без jQuery!). Было бы проще, если jqLite (который используется angular.element) включил find по идентификатору или имени класса, а не только по имени тега.