Update: Fiddle ж/полное решение: http://jsfiddle.net/langdonx/VXBHG/Создание директивы AngularJS для кнопки JQuery UI
В рамках усилий, чтобы сравнить и контрастных KnockoutJS и AngularJS, я побежал через KnockoutJS interactive tutorial, и после каждого раздела, Я переписал его в AngularJS, используя то, что я уже знал + AngularJS reference.
Когда я добрался до шага 3 учебника Creating custom bindings, я подумал, что было бы подходящее время, чтобы развернуть на Angular Directives и написать собственный тег. Затем я потерпел неудачу.
Я против двух проблем, которые я не смог выяснить. Я создал новую скрипку, чтобы попытаться обернуть мою голову вокруг того, что происходит ...
- (fiddle): Я понял мой вопрос рамочный, но это возможно только PASSTHROUGH
ng-click
? Единственный способ заставить его работать - переименовать его вjqb-click
, что немного раздражает. - (fiddle): Как только я применил
.button()
к моему элементу, все пошло странно. Моя догадка заключается в том, что и Angular, и jQuery UI управляют HTML. Я бы этого не ожидал, но Angular, кажется, предоставляет свой собственныйspan
для моегоbutton
(см. Строку 21 JavaScript), и, конечно же, пользовательский интерфейс jQuery, которого я ожидал бы. Я взломал HTML, чтобы он выглядел правильно, но даже до этого ни одна из функций не работает. У меня все еще есть проблема с областью, и привязка шаблона отсутствует. Что мне не хватает?
Я понимаю, что есть проект AngularUI, на который я должен обратить внимание, и я могу, возможно, снять то, что я пытаюсь сделать с помощью только CSS, но на данный момент это больше связано с тем, как лучше использовать директивы чем думать, что это хорошая идея.
ARGH, так отсутствие директивного контроллера и 'ng-transclude', давайте расширим область действия' ng-click', как правило ... сложно. – Langdon
Контроллер no..directive также может также использовать область родительского контроллера. Все зависит от того, установлен ли параметр scope. 'ng-transclude' также не влияет на сферу применения. 'transclude' по существу предназначен для определения того, следует ли переносить существующий html в тег в новый шаблон или отказаться от него. – charlietfl
О, я думаю, это был тот факт, что мой контроллер определил функцию с именем test, а затем, когда я удалил это, было фактом, что я имеет 'scope: {}', который, как говорят документы, создает изолированную область. Это то, что я получаю для копирования из примеров. :) Спасибо за вашу помощь. Теперь, когда есть текстовый атрибут, я смог заставить 'attrs. $ Наблюдать' работать. Ура! – Langdon