Poprawny sposób integracji wtyczek jQuery w AngularJS

Zastanawiałem się, jaki jest prawidłowy sposób, aby zintegrować wtyczki jQuery do mojej aplikacji angular. Znalazłem kilka samouczków i screenów, ale wydają się one dostosowane do konkretnej wtyczki.

Na Przykład: http://amitgharat.wordpress.com/2013/02/03/an-approach-to-use-jquery-plugins-with-angularjs/ http://www.youtube.com/watch?v=8ozyXwLzFYs

Czy powinienem stworzyć taką dyrektywę -

App.directive('directiveName', function() {
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {
            $(element).'pluginActivationFunction'(scope.$eval(attrs.directiveName));
        }
    };
}); 

A następnie w html wywołanie skryptu i dyrektywa?

<div directiveName ></div>
<script type="text/javascript" src="pluginName.js"></script>

Thanks ahead

Author: chenrui, 2013-06-05

2 answers

Tak, masz rację. Jeśli używasz wtyczki jQuery, nie umieszczaj kodu w kontrolerze. Zamiast tego utwórz dyrektywę i umieść kod, który normalnie miałbyś wewnątrz link funkcji dyrektywy.

Jest kilka punktów w dokumentacji, które możesz rzucić okiem. Znajdziesz je tutaj:
typowe pułapki

Poprawne używanie kontrolerów

Upewnij się, że gdy odwołujesz się do skryptu w widoku, odwołaj go na koniec - po odwołaniu się do biblioteki angularjs, kontrolerów, usług i filtrów.

EDIT: zamiast używać $(element), możesz użyć angular.element(element) używając AngularJS z jQuery

 141
Author: callmekatootie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-06 18:53:25

Mam już 2 sytuacje, w których dyrektywy i usługi / fabryki nie grały dobrze.

Scenariusz jest taki, że mam (miałem) dyrektywę, która ma iniekcję zależności usługi i od dyrektywy proszę usługę o wykonanie wywołania ajax (z $http).

W końcu, w obu przypadkach ng-Repeat nie zapisywał się w ogóle, nawet gdy podałem tablicy wartość początkową.

Próbowałem nawet zrobić dyrektywę z kontrolerem i izolowanym zakresem

Only when i moved wszystko do kontrolera i działało jak magia.

Przykład o tym tutaj Inicjalizacja wtyczki jQuery (RoyalSlider) w js

 0
Author: bresleveloper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:36