Использование 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 делать то, что вы пытаетесь сделать, вы не пожалеете об этом!