Я пытаюсь написать директиву AngularJS с именем «insert-after-parent», которая вставляет содержимое после его родителя. Внутри этой директивы я использую jQuery для выбора родительского элемента. Поскольку AngularJS основан на jQuery, я загружаю сначала jQuery и структуру AngularJS. Но когда я это делаю, моя директива не работает. Но если я сначала загружаю AngularJS, а затем структуру jQuery, он работает. Может кто-нибудь сказать мне почему?Различное поведение из-за порядка импорта AngularJS и jQuery
angular.module('ls', []).directive('insertAfterParent', ["$compile", function($compile){
return {
restrict: 'E',
link: function(scope, element, attrs){
scope.$watch(function(scope) {
return scope.$eval(attrs.src)
}, function(id) {
if(id){
var content = $('script[type="text/ng-template"][id="' + id + '"]').html()
if(content){
$compile($(content).insertAfter(element.parent()))(scope)
}
}
})
}
}
}])
Вот ссылка на мой plunkr: http://plnkr.co/edit/gTXk0bjyQ6nTTCaB9Czg?p=preview
Я использую угловой 1.2.23 и JQuery 1.7.1 Согласно документации (AngularJS FAQ), эти версии совместимы.
Версия jqLite AngularJS не включает все функции, которые мне нужны для моих директив. Вот почему мне нужно импортировать jQuery. В FAQ также говорится, что вы можете использовать jQuery в AngularJS: https://docs.angularjs.org/misc/faq https://docs.angularjs.org/api/ng/function/angular.element – lonnenjunior
Я не думаю, что вам нужны эти функции, если вы правильно используете углы. Когда это сказано, мой пост не отвечает на ваш вопрос? –
Я попытался выполнить директиву полностью в AnulgarJS. Но я не могу сделать insertAfter(), потому что он не поддерживается jqLite. – lonnenjunior