gpt4 book ai didi

angularjs - 使用带有 transclude 的指令编译时的重复属性

转载 作者:行者123 更新时间:2023-12-04 14:02:26 24 4
gpt4 key购买 nike

问题的JsFiddle:http://jsfiddle.net/UYf7U/

在指令编译中使用 angularJs transclude 时,它​​将复制任何
属性属性。 IE。

<a class="myClass">my link</a>

会变成
<a class="myClass myClass">my link</a>

同样,当使用 ngClick
<a ng-click="myFunction()"> my link</a>

会变成
<a ng-click="myFunction() myFunction()"> my link</a>

fiddle 演示了这一点,不幸的是它崩溃了。这是我正在尝试实现的精简版本。

有没有解决的办法?我已将该问题发布到 github: https://github.com/angular/angular.js/issues/2576

当单击 Hello 时,“clicked”一词应出现在警报中。

最佳答案

发生这种情况是因为 myDirective 被初始化了两次 - 首先作为标记的一部分:

 <div class="transcludeMe">
<div data-transclude-this="here">
<div class="myDirective"></div>
</div>
</div>

第二在 transcludeMe指令 - 因为您在指令初始化的编译阶段执行此操作:
transcludeHere[0].innerHTML = clone[x].innerHTML

由于您使用 replace:true原始元素的所有属性都将被复制到模板元素。如果你删除它,你的例子就可以工作,但你仍然知道 myDirective正在初始化两次: http://jsfiddle.net/tkzgG/

关于angularjs - 使用带有 transclude 的指令编译时的重复属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16363317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com