Использование JQuery внутри директивы AngularJS хорошая или плохая идея?
Ниже вы можете увидеть мой код для директивы.
Мой вопрос: "Могу ли я использовать jquery с директивами? Это хорошая идея? Если не почему?"
outsource.directive('dedicated', function(){
return {
restrict: 'E',
link: function(scope, element, attribute){
$("#klik").click(function(){
alert('works');
});
},
replace: true,
templateUrl: 'src/app/components/views/dedicated-prices.html'
};
});
Этот код работает.
Ответы
Ответ 1
Вы не должны использовать jquery, поскольку Angular сам имеет более легкую версию, известную как jqlite.
Дополнительная документация по JQLITE
Итак, ваша директива должна выглядеть так:
outsource.directive('dedicated', function(){
return {
restrict: 'E',
link: function(scope, element, attribute){
var elem = angular.element(document.querySelector('#klik'))
angular.element(elem).triggerHandler('click');
},
replace: true,
templateUrl: 'src/app/components/views/dedicated-prices.html'
};
});
Ответ 2
Простой ответ: ДА (просто напишите jquery.js выше Angular.js на странице HTML. jqLite будет заменен на jQuery)
Вы будете использовать jQuery для манипуляций с DOM, и в этой теме много обсуждений (использовать или нет в современных браузерах).
Одна из популярных публикаций в последние дни: http://lea.verou.me/2015/04/jquery-considered-harmful/
Несмотря на все, jQuery по-прежнему является очень популярной, очень используемой библиотекой DOM. И он легко работает со многими современными интерфейсами пользовательского интерфейса.
Ответ 3
Интересный вопрос. У меня есть jquery с выбором элементов в некоторых директивах/контроллерах в моей кодовой базе.
Я всегда чувствую себя грязным, используя его, и делаю это только тогда, когда мне действительно нужно, к сожалению, это почти всегда бомба замедленного действия и приводит меня к тому, что я проклинаю себя через несколько месяцев подряд и рефакторинг, чтобы использовать более угловатый метод.
Посмотрите, есть ли уродный способ angular делать то, что вы пытаетесь сделать, вы не пожалеете об этом!