当 `compile:` 似乎工作正常时,为什么我需要 $compile
Why do I need $compile when `compile:` seems to work fine
查看 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
?
我不知道谁推荐了什么。各有各的用处。
指令的compile
函数运行一次定义和return指令的pre-和post-link函数,一般用于修改模板时该指令首先被编译。
可以使用 $compile
服务来编译和 link 指令即使在创建指令后动态接收的一些内容。
查看 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
?
我不知道谁推荐了什么。各有各的用处。
指令的compile
函数运行一次定义和return指令的pre-和post-link函数,一般用于修改模板时该指令首先被编译。
可以使用 $compile
服务来编译和 link 指令即使在创建指令后动态接收的一些内容。