2013-12-09 49 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(就像我在編輯中做的那樣)是否可以解決您的問題? –