0

查看http://jsfiddle.net/3jvoL4ew/

(注意:我知道它可以用 a 来完成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);
        }
    }
});            

所以如果compile:在 ngRepeat 中使用 using 更简洁、更高效,为什么人们推荐 using$compile呢?

4

1 回答 1

1

我不知道谁推荐什么。每个都有自己的用途。

指令的compile函数运行一次以定义和返回指令的前链接和后链接函数,通常用于在指令第一次编译时修改模板。

即使在创建指令之后,该$compile服务也可以用于编译和链接指令动态接收的一些内容。

于 2015-01-19T22:14:28.797 回答