AngularJS: Как .find использовать jqLite?
Я пытаюсь удалить jquery из моего приложения Angular.js, чтобы сделать его легче, и вместо этого поставьте Angular jqLite. Но приложение сильно использует find ('# id') и находит ( ".classname" ), которые не поддерживаются jqLite, только "имена тегов" (согласно документации)
задавался вопросом, что бы вы чувствовали, было бы лучшим подходом к его изменению. Один из подходов, о котором я думал, - создать пользовательские теги HTML. например:
изменить
<span class="btn btn-large" id="add-to-bag">Add to bag</span>
to
<a2b style="display:none;"><span class="btn btn-large" >Add to bag</span></a2b>
и
$element.find('#add-to-bag')
к
$element.find('a2b')
Любые мысли? другие идеи?
спасибо
Лиор
Ответы
Ответ 1
По существу, и как указано @kevin-b:
// find('#id')
angular.element(document.querySelector('#id'))
//find('.classname'), assumes you already have the starting elem to search from
angular.element(elem.querySelector('.classname'))
Примечание.. Если вы хотите сделать это с помощью своих контроллеров, вы можете захотеть взглянуть на раздел "Использование контроллеров правильно" в руководства разработчиков и реорганизовать вашу логику представления в соответствующие директивы (например, < a2b... > ).
Ответ 2
Если elem.find()
не работает для вас, убедитесь, что вы включили JQuery script до angular script....
Ответ 3
Я работаю с jQuery
в моем app
, и это то, что сработало для меня.
function link(scope, el) {
// ...
$(el[0])
.find('.classname')
.doSomethingJQuery_ish();
// ...
}
Примечания:
find() - Ограничено поиском по имени тега
- Указанный выше метод хорош, если вы уже загружаете
jQuery
в свой app
. Если нет, вам придется загрузить его для этого.
Удачи.
Ответ 4
angualr использует более легкую версию jquery, называемую jqlite, что означает, что у нее нет всех функций jQuery. вот ссылка в документах angularjs о том, что вы можете использовать из jquery.
Angular Документы элементов
В вашем случае вам нужно найти div с идентификатором или именем класса.
для имени класса вы можете использовать
var elems =$element.find('div') //returns all the div in the $elements
angular.forEach(elems,function(v,k)){
if(angular.element(v).hasClass('class-name')){
console.log(angular.element(v));
}}
он не такой гибкий, как jQuery, но что