查看http://jsfiddle.net/3jvoL4ew/
(注意:我知道可以使用template:
完成,但这不是我的问题)
它包含一个指令,它将一个按钮和一个文本添加到它所使用的元素上:
app.directive("otcDynamic", function ($compile) {
return {
compile: function(element) {
var template = "<button ng-click='doSomething()'>{{label}}</button>";
element.append(template);
}
}
});
它有效,但定义这样一个指令的常用方法是:
app.directive("otcDynamic", function ($compile) {
return {
link: function (scope, element) {
var template = "<button ng-click='doSomething()'>{{label}}</button>";
var linkFn = $compile(angular.element(template));
var content = linkFn(scope);
element.append(content);
}
}
});
因此,如果在ngRepeat中使用compile:
更简洁,效率更高,为什么人们建议使用$compile
?
答案 0 :(得分:1)
我不知道是谁建议的。每个都有自己的用途。
指令的compile
函数运行一次以定义并返回指令的前后链接函数,并且通常用于在首次编译指令时修改模板。
即使在创建指令之后,$compile
服务也可以用来编译和链接指令动态接收的一些内容。