Правильный способ интеграции плагинов jQuery в AngularJS - программирование

Правильный способ интеграции плагинов jQuery в AngularJS

Мне было интересно, как правильно интегрировать плагины jQuery в мое приложение angular. Я нашел несколько учебников и скриншотов, но они, похоже, удовлетворяют определенному плагину.

Например: http://amitgharat.wordpress.com/2013/02/03/an-approach-to-use-jquery-plugins-with-angularjs/ http://www.youtube.com/watch?v=8ozyXwLzFYs

Создать такую ​​директиву -

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

А затем в html-вызове script и директивой?

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

Спасибо заранее

4b9b3361

Ответ 1

Да, вы правы. Если вы используете плагин jQuery, не помещайте его в контроллер. Вместо этого создайте директиву и поместите код, который вы обычно используете внутри функции link директивы.

В документации есть несколько пунктов, на которые вы можете взглянуть. Вы можете найти их здесь:
Общие ошибки

Правильно использовать контроллеры

Убедитесь, что когда вы ссылаетесь на script в своем представлении, вы ссылаетесь на него последним - после того, как ссылка на библиотеку angularjs, контроллеры, службы и фильтры.

EDIT: вместо использования $(element) вы можете использовать angular.element(element) при использовании AngularJS с jQuery

Ответ 2

У меня есть 2 ситуации, когда директивы и службы/фабрики не играли хорошо.

сценарий заключается в том, что у меня есть (есть) директива, которая имеет инъекцию зависимостей службы, и из директивы я прошу услугу сделать ajax-вызов (с $http).

в конце концов, в обоих случаях ng-Repeat вообще не записывался, даже когда я дал массиву начальное значение.

Я даже попытался сделать директиву с контроллером и изолированной областью

только когда я переместил все на контроллер и работал как магия.

пример об этом здесь Инициализация плагина jQuery (RoyalSlider) в Angular JS