Мне было интересно, как правильно интегрировать плагины jQuery в мое угловое приложение. Я нашел несколько уроков и скриншотов, но они, похоже, предназначены для определенного плагина.
Например: 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 вызвать скрипт и директиву?
<div directiveName ></div>
<script type="text/javascript" src="pluginName.js"></script>
Спасибо вперед
jquery-plugins
angularjs
Гидон
источник
источник
$(element).pluginActivationFunction(scope.$eval(attrs.directiveName));
без кавычек.Ответы:
Да вы правы. Если вы используете плагин jQuery, не помещайте код в контроллер. Вместо этого создайте директиву и поместите код, который вы обычно имеете внутри
link
функции директивы.В документации есть пара моментов, на которые вы могли бы взглянуть. Вы можете найти их здесь:
Общие ловушки
Правильное использование контроллеров
Убедитесь, что когда вы ссылаетесь на скрипт в своем представлении, вы ссылаетесь на него в последний раз - после ссылки на библиотеку angularjs, контроллеры, сервисы и фильтры.
РЕДАКТИРОВАТЬ: Вместо того, чтобы использовать
$(element)
, вы можете использоватьangular.element(element)
при использовании AngularJS с jQueryисточник
ng-click
директиву через этот текстовый параметр HTML)У меня уже есть две ситуации, когда директивы и службы / фабрики не играли хорошо.
Сценарий состоит в том, что у меня есть (была) директива, в которую вставляется зависимость службы, и из этой директивы я прошу службу сделать вызов ajax (с $ http).
в конце концов, в обоих случаях ng-Repeat вообще не регистрировался, даже когда я дал массиву начальное значение.
я даже пытался сделать директиву с контроллером и изолированной областью
только когда я переместил все на контроллер, и он работал как по волшебству.
пример об этом здесь Инициализация плагина jQuery (RoyalSlider) в Angular JS
источник