Javascript angularjs-动态更新页面上的所有指令后重新加载它们

Javascript angularjs-动态更新页面上的所有指令后重新加载它们,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我在html页面中有一组指令,假设指令是。这些指令是在AngularJS之外添加或更改的,例如,jQuery函数只需将一个新的附加到页面上 这里是我的问题-在添加新的之后,指令实际上没有做任何事情-它只是一个没有任何功能的标记 如何强制Angular识别已添加的新标记?我试过在scope.apply上乱搞,但运气不好 谢谢 我想您正在寻找angulars$compile方法: myApp.directive('addonclick', function($compile){ return

我在html页面中有一组指令,假设指令是
。这些指令是在AngularJS之外添加或更改的,例如,jQuery函数只需将一个新的
附加到页面上

这里是我的问题-在添加新的
之后,指令实际上没有做任何事情-它只是一个没有任何功能的标记

如何强制Angular识别已添加的新标记?我试过在scope.apply上乱搞,但运气不好


谢谢

我想您正在寻找angulars
$compile
方法:

myApp.directive('addonclick', function($compile){
    return {
        restrict: 'A',
        link: function(scope, element, attrs){   
            var html = attrs.addonclick; //or something else     
            element.on("click", function(){
                $(element).append($compile(html)(scope));
            })
        };
    };
});
编辑:

首先尝试获取范围:

var scope = angular.element("yourElement").scope();
然后获取并调用编译服务:

var compile = angular.element("yourElement").injector().get("$compile"); //or
var compile = angular.injector(["moduleName"]).get("$compile");
$("yourElement").append(compile("<my-directive/>")(scope));
var compile=angular.element(“yourElement”).injector().get(“$compile”)//或
var compile=angular.injector([“moduleName”]).get(“$compile”);
$(“yourElement”).append(compile(“”)(scope));

是否有不使用数据绑定来操纵视图的原因?例如,
ng repeat
我不确定我是否理解了这些问题,但我在页面的不同部分加载了几个指令,由外部代码控制,这些代码不是angular的一部分。好的,但在这种情况下,AngularJS指令本身将代码添加到页面中。我想以一种与AngularJS完全不同的方式添加div,例如,一个常规的ol'jquery“click”方法将添加div。我不确定这是否可行,因为您需要范围。我也不知道你为什么要这样做,为什么你不能创建自己的指令,在单击时添加
my directive
?…也许你应该发布更多的代码来说明这一点。我不能这样做的原因是因为我不控制页面中添加代码的部分,我只控制页面上显示的指令。但是我可以告诉页面的其他部分要运行什么代码来插入新指令,或者插入指令后要运行什么代码。获取
$compile
服务的第二个版本不起作用。看起来您还必须包括所有的依赖模块。