2013-09-19 5 views
0

Я использую Angular для немного и действительно оказываюсь гораздо более эффективным и создаю много строк кода, чем в Backbone и jquery. Тем не менее, я работаю с другими разработчиками, которые являются первичными в компонентах Backbon/jquery/controls, которыми мы все разделяем. Поскольку это сложные компоненты/элементы управления, которые я не могу переписать в Angular, мне нужно найти способ использовать их изнутри Angular.Использование обработчика jquery в Angular

В конкретном случае я имею дело с элементом управления, создающим диалоговое окно, которое позволяет пользователям создавать записи в серии систем запросов справки или ошибок журнала. Этот код работает в ряде приложений. Вот простой пример:

<div class="foo">Help</div> 

А затем обработчик.

$(".foo").ShowHelp({project:"myproject", app:"MyApp"}); 

Примечание: «foo» используется для позиционирования диалогового окна.

В Angular Я попытался создать добавить директиву ng-click и в контроллере обработать клик, но ShowHelp не вызывается. Это угловой код:

<div class="foo" ng-click="doShowHelp()">Help</div> 

В контроллере у меня есть

$scope.doShowHelp = function() { 
     console.log("in doShowHelp"); 
     $(".foo").ShowHelp({project:"myproject", app:"MyApp"}); 
    }; 

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

Заранее спасибо

+1

Вы можете бросить базовую версию в плункер или скрипку? Это, вероятно, легкое исправление, но это поможет увидеть больше кода. –

+0

Is * "' ("foo") '" * на самом деле * "' (". Foo") '" * в вашем коде? –

+0

Что делает '$ (". Foo "). ShowHelp()' do? – Ronnie

ответ

0

Вы пропускаете точку перед селектором "Foo"

Попробуйте

$ ("Foo "). ShowHelp ({проект:." MyProject", приложение: "MyApp"});

+0

Opps. Ведущая точка присутствует в реальном коде. Для агрессивности с вырезом/пастой. Я обновил образец. – JerryKur

0

Больше всего директив имеет функцию 'link', с различными параметрами, один из которых является элементом DOM из currect-директивы. Что-то вроде этого:

link: function(scope, element, attrs) { 
    element.ShowHelp({project:"myproject", app:"MyApp"}); 
    ... 
} 
+0

Это выглядит интересно. Как я могу подключить эту директиву так, чтобы, когда пользователь нажал на элемент ShowHelp(), вызывается? – JerryKur

+0

Нет, он будет вызываться после компиляции DOM – dolgishev

Смежные вопросы