Javascript 由于AngularJS和jQuery的导入顺序不同,行为也不同

Javascript 由于AngularJS和jQuery的导入顺序不同,行为也不同,javascript,jquery,angularjs,angularjs-directive,Javascript,Jquery,Angularjs,Angularjs Directive,我正在尝试编写一个名为insert after parent的AngularJS指令,该指令将内容插入其父项之后。在这个指令中,我使用jQuery选择父元素。因为AngularJS基于jQuery,所以我首先加载jQuery,然后加载AngularJS框架。但当我这么做的时候,我的指令就不起作用了。但是如果我先加载AngularJS,然后加载jQuery框架,它就可以工作了。有人能告诉我为什么吗 angular.module('ls', []).directive('insertAfterPar

我正在尝试编写一个名为insert after parent的AngularJS指令,该指令将内容插入其父项之后。在这个指令中,我使用jQuery选择父元素。因为AngularJS基于jQuery,所以我首先加载jQuery,然后加载AngularJS框架。但当我这么做的时候,我的指令就不起作用了。但是如果我先加载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的链接:

我使用的是angular 1.2.23和jQuery 1.7.1
根据文档,这些版本是兼容的。

正如您所说,Angular有一个精简版的jquery。加载angular后,您的全身jquery将被精简版本覆盖


请不要加载jquery。您不需要它-除非您以某种方式将旧的jquery解决方案升级到angularjs。。。当你发现自己需要jquery时,你的应用程序设计是错误的,或者最终没有按照角度的方式(声明式)完成。

AngularJS的jqLite版本没有包含我的指令所需的所有功能。这就是为什么我需要导入jQuery。在FAQ中还提到,可以在AngularJS中使用jQuery:我认为如果正确使用AngularJS,就不需要这些函数。说到这里,我的帖子没有回答你的问题吗?我已经试着用AnulgarJS完整地完成了指令。但是我不能做insertAfter,因为jqLite不支持它。您可以创建一个新问题,询问如何在没有jquery的情况下解决它。你的问题看起来回答正确吗?提示:不要用insertAfter修改dom,修改数据/范围变量,让angular绘制额外的元素,而不是你的帖子没有回答我的问题。这只是一个解决办法。发布的代码应该有效,请参见常见问题解答AngularJS。