2013-12-09 46 views
0

我遇到了我的代码问题,通过玩一点我找到了一个解决方案,但我不知道它为什么工作。事情是这样的:

// 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并将其链接到的范围和我所得到的一个绑定元素。然后我用绑定元素替换原始元素。但是,然后所有角度脏检查或事件处理程序不再工作。

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

感谢

回答

0

听起来你接近这一点都不奇怪。

为什么不直接连接指令声音按钮?不需要做。寻找。

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

这已经是一个指令,但问题是我从数据库中获取rawHtml,因此我需要手动编译它。 – KayZee

+0

好的,你有什么机会可以用小提琴来证明这一点? –

+0

如果添加replace:true(就像我在编辑中做的那样)是否可以解决您的问题? –