有没有办法用像append()这样的jQuery方法添加一个Angular指令元素,并让Angular做它的编译/链接,使它像你首先包含该指令一样工作?
例:
app.directive('myAngularDirective',[function () { ... // Lots of stuff in here; works when used normally but not when added via jQuery }); $("body").append("<my-angular-directive />");
它目前只是附加一个名为“my-angular-directive”的空DOM元素,但是Angular不会启动并发挥它的魔力.
解决方法
正确的方法是使用:
$compile并且如果您的指令返回:指令定义对象(这是btw.推荐的方式),您可以在其上调用链接函数(例如,注入范围).
$('body').append($compile("<my-angular-directive />")(scope)); scope.$apply();