2014-01-28 37 views
0

請參考Plunker http://plnkr.co/edit/acPGl5k0ECO9yFAYgfIW?p=preview,因爲它可能更好地說明我想解釋的內容。從附加內容調用角度ngClick動作

使用Angular,目標是單擊一個元素(在這種情況下,當表單輸入需要關注時),這會導致將DIV附加到頁面上 - 使用element.parent().append(template)。在附加的DIV內有一個帶有ngClick動作的按鈕,點擊時應該觸發。

問題似乎是ngClick指令永遠不會被註冊。點擊它什麼都不做。這是在指令定義中使用編譯的情況嗎?

回答

1

是的,在這種情況下您需要$compile元素。注入$compile服務,然後做到這一點:

$x = angular.element(appendTemplate); 
element.bind('focus', function() { 
    element.parent().append($x); 
}); 
$compile($x)(scope); 
我使用angular.element實際創建從HTML字符串DOM節點,以便 $compile將是是頁面上的實際元素

Live demo (click).

不過,值得注意的是,有很多的,可能這個代碼進行改進。例如,將範圍函數在控制器中聲明並傳遞給指令是有意義的。如果指令需要創建功能,我會將它作爲一個本地作用域函數,並在事件綁定中使用它,而不是將其附加到作用域。考慮到這一點,您可以使用compile而不是link進行重構,以便標記自動編譯。

+0

太簡單了。謝謝您的幫助 – iamsar