2014-02-12 2 views
1

Я использую директиву, где я получил элемент DOM в его функции связи, и там у меня есть элемент, к которому я хочу получить доступ.Правильный способ перемещения по угловому элементу

т.е.

// element = <directive> 
//    ... 
//    <div id="target"></div> 
//    ... 
//   </directive> 

Если я хочу, чтобы получить элемент, например, чтобы сделать .click() событие, я должен был бы использовать «document» объект, потому что я не нашел путь прямо на этот #target элемент сразу.

Любая идея о правильном способе сделать это? К сожалению jqLite только дает нам find() функцию, где вы не можете осуществлять поиск по id не class

+1

сделал и попробовал угловой.элемент (elem.querySelector ('. Classname')) –

+0

, что лучше, чем то, что я использовал haha ​​thanks! – farolfo

ответ

0

Лично я, когда я использую angularjs, я обернуть все в новой ссылке, которая автоматически использует querySelectorAll для ориентации в DOM, например, так:

YOUR_APP.run(function() { 
    jqLite = function(selector) { 
     var selectorResult = (typeof selector == 'object') ? selector : document.querySelectorAll(selector) 
     return angular.element(selectorResult) 
    }; 
}) 

Так что я могу использовать его «как JQuery», используя: jqLite('body > div').addClass('whatever');

Есть редкие случаи, когда это не будет вести себя как JQuery, например, с помощью querySelectorAll, вы больше не получите обр ay объектов с результатами, например jQuery, но nodeList, поэтому вы не можете применять метод forEach, например, но есть простые способы обхода. И всякий раз, когда новая ссылка jqLite не может выполнить эту работу, вы всегда можете использовать угловой элемент непосредственно.

Но это должно удовлетворить 99% всего нуждается JQuery :)

Надеются, что это помогает.

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