$ compile函数和替换

时间:2013-12-09 15:33:43

标签: angularjs directive

我的代码有问题,通过播放一点我找到了解决方案,但我不知道它为什么有效。事情就是这样:

// recompile all audio buttons
angular.element(textAsDom).find('sound-button').each(function(key, element) {
        $compile(angular.element(element))(scope);
});

我有一个原始html作为参数,在其中我正在寻找名为“soundButton”的指令,我编译它们以便使用它们附加的范围函数和属性。

然而,我的第一个解决方案是这样做:

 // recompile all audio buttons
 angular.element(textAsDom).find('sound-button').each(function(key, element) {
     var compiledSound = $compile(angular.element(element))(scope);

     angular.element(element).replaceWith(compiledSound);
 });

所以我首先编译soundButton并将其链接到范围,然后我得到一个绑定元素作为回报。然后我用绑定元素替换原始元素。但是,所有角度脏检查和事件处理程序都不再起作用。

至于现在我的问题已经解决了,但是为了理解为什么它不起作用,我问你们这些人是否可以对这些深奥的东西有所了解。

由于

1 个答案:

答案 0 :(得分:0)

听起来你接近这个有点奇怪。

为什么不将指令连接到声音按钮?没必要.find。

.directive("sound-button", function(){
    return {
        class: 'C',
        replace: true,
        ....
    }
});