2013-12-17 3 views
5

Я пытаюсь использовать AngularJS для запроса DOM моего представления. Мне нужно получить все элементы, у которых есть атрибут «размещение данных» со значением «top». В JQuery, я хотел бы сделать это:AngularJS - Найти элемент по значению атрибута

var elements = $('[data-placement="top"]'); 

Однако, я не знаю, как сделать это с AngularJS. Может ли кто-нибудь сказать мне, как это сделать?

Спасибо!

+1

AngularJS не делает этого. jQuery делает это. Загрузите jQuery в ваше приложение и оно должно работать – Abilash

+2

Это не совсем так: вы можете сделать это с помощью настраиваемых директив, что будет «угловым» способом делать вещи. Можете ли вы опубликовать немного больше информации о вашем прецеденте? –

+1

Золотое правило Углового развития - никогда, никогда не прикасаться к DOM от контроллера. Поэтому, чтобы ответить на ваш вопрос несколькими вопросами: где вы размещаете этот код javascript и что вы планируете делать с этими элементами? Если этот код идет куда угодно, кроме как в пользовательской директиве, вам может потребоваться отступить и подумать об этом по-другому. –

ответ

4

В AngularJS вы не будете делать прямого манипулирования DOM с контроллера, вы должны создать для него директиву. Внутри директивы вы можете использовать JQuery по своему усмотрению.

В любом случае вы, я думаю, вы можете использовать angular.element() с селектором JQlite, вот документация angular.element.

Пример:

// find('#id') 
angular.element(document.querySelector('#id')) 
0

Из вашего вопроса я понимаю, что вы хотите найти элементы с atrributes, требующей определенное условием в этом случае мы можем использовать $document.

Дополнительная информация об этом here.

Так что, приходя к вашему требованию, вы можете его найти.

$document.find("[attribute-name='attribute-value')"); 

Это вернет объект элемента, завернутый в jQuery или jqLite. Но для его использования вам необходимо ввести $document в контроллер. Таким образом, вы продолжите с ним связанные угловые операции.

Другой подход к этому вопросу - angular.element.

angular.element.find("[attribute-name='attribute-value')"); 

Но это вернет элемент с обернутым необработанным элементом DOM или HTML-строкой в ​​качестве элемента jQuery. вы можете получить дополнительную информацию об этом here

Я предпочитаю использовать $document, поскольку угловые операции могут быть выполнены с использованием первого метода.

Смежные вопросы