element.replaceWith在链接功能中

时间:2014-03-09 10:00:01

标签: angularjs angularjs-directive

我已经看到了在链接函数中重新发送元素的不同示例

示例一:

    var template = '<span><input type="text" ng-model="ngModel"></span>';
    element.html(template);
    $compile(element.contents())(scope);

例二:

    var template = '<span><input type="text" ng-model="ngModel"></span>';
    element.html(template);
    var el = $compile(element.contents())(scope);
    element.replaceWith(el);

我曾尝试过2-3个简单的指令,即使不更换元素也能正常工作。那么“element.replaceWith(el)”的用例是什么?什么时候需要在链接函数的末尾使用“element.replaceWith(el)”?

1 个答案:

答案 0 :(得分:6)

替换实际上是可选的,最终结果将不完全相同:

你的第一个例子:带有你的指令的元素将span作为唯一的孩子

您的第二个例子:带有您的指令的元素最终被替换为span - &gt;在DOM中少一级。

  

一切都是关于你最终想要的DOM。如果您认为带有该指令的原始容器是一个仅用于声明组件的无用包装器,您将需要打开该内容。