Правильный способ интеграции плагинов 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>
Спасибо заранее
Ответы
Ответ 1
Да, вы правы. Если вы используете плагин jQuery, не помещайте его в контроллер. Вместо этого создайте директиву и поместите код, который вы обычно используете внутри функции link
директивы.
В документации есть несколько пунктов, на которые вы можете взглянуть. Вы можете найти их здесь:
Общие ошибки
Правильно использовать контроллеры
Убедитесь, что когда вы ссылаетесь на script в своем представлении, вы ссылаетесь на него последним - после того, как ссылка на библиотеку angularjs, контроллеры, службы и фильтры.
EDIT: вместо использования $(element)
вы можете использовать angular.element(element)
при использовании AngularJS с jQuery
Ответ 2
У меня есть 2 ситуации, когда директивы и службы/фабрики не играли хорошо.
сценарий заключается в том, что у меня есть (есть) директива, которая имеет инъекцию зависимостей службы, и из директивы я прошу услугу сделать ajax-вызов (с $http).
в конце концов, в обоих случаях ng-Repeat вообще не записывался, даже когда я дал массиву начальное значение.
Я даже попытался сделать директиву с контроллером и изолированной областью
только когда я переместил все на контроллер и работал как магия.
пример об этом здесь Инициализация плагина jQuery (RoyalSlider) в Angular JS