element.replaceWith在链接功能中

har*_*shr 9 angularjs angularjs-directive

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

例子一:

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

例二:

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

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

lib*_*b3d 6

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

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

你的第二个例子:带有你的指令的元素最终被替换为span - > DOM中的一个级别.

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