У меня есть директива, которая использует пользовательский JQuery плагин, плагин возвращает шаблон HTML, чтобы показать некоторые список и работает хорошо, НО когда я пытаюсь использовать также AngularJs директива внутри этого шаблона что-то вроде «ng-click» или одна из моих пользовательских директив, которую он просто не подбирает.Угловая директива в JQuery плагин не работает
Когда я открываю источник в инструментах отладчика firebug или chrome, я вижу, что к этому div не добавляется класс = "ng-scope", который обычно имеет место при правильной работе угловых управляемых div. Но я вижу, что этот div находится в hiearchialy под основным ng-app div, поэтому я думал, что он должен быть унаследован всем дочерним div.
Опять Этот контроллер и директива работает, только НЕ рабочая часть является нг нажмите, которые я добавил в результате шаблон из внутри плагина JQuery. Какие-нибудь идеи в чем проблема?
myApp.directive("myDirective", function(){
return{
restrict: 'A',
link: function(scope, element,attrs) {
$(element).selectAutoComplete({
dataSourceDelegate: scope.dataSource1,
dataSourceObject: { value: "id", display: "title"},
resultTemplate: '<div>show some data as list</div> <div id="internalTemplate"
ng-click="doSomething()"> Show Next </div>'
});
}
}
});
и в Html
<div ng-controller="myController">
<input my-directive type="text" />
</div>
AngularJS необходимо скомпилировать шаблон, прежде чем он сможет установить часы и поддерживать привязку данных к методу и свойствам области. Для динамически добавленной DOM нужно использовать сервис '$ compile', но поскольку dom обрабатывается jQuery-плагином, вы не можете скомпилировать то, что вводится. – Chandermani
@Chandermani, так что даже используя $ compile, я никак не могу использовать любые угловые директивы в этом шаблоне? – Spring
Думаю, что так. Поскольку плагин вводит шаблон, у вас нет элемента управления. Вам нужно заглушить плагин, чтобы узнать, как он вводит шаблон. Если плагин jquery может принимать скомпилированный шаблон (который является угловым элементом), он может работать. – Chandermani