簡體   English   中英

AngularJS:自定義轉換后ng-if和ng-repeat不起作用

[英]AngularJS : ng-if and ng-repeat not working after custom transclusion

我試圖在angularJS中自定義轉換指令,因為我需要將兩個單獨的元素轉換為兩個單獨的位置。

問題在於,雖然某些指令延續了被轉換的內容工作,例如ng-bind其他如ng-ifng-repeat ,但即使在重新編譯具有正確范圍的轉換元素之后也是如此。

示例: http//jsbin.com/menakapoma/1/edit?html,js,output

正如您在示例中看到的那樣, ng-bind可以工作,但是ng-if雖然它們都在同一個范圍內並且訪問相同的值,但它們都沒有。 ng-if的真或假狀態都ng-if

我相信這是因為ng-if指令被轉換為注釋,但即使我將transcluding指令的優先級設置為9999並在預連接函數中執行它仍然不起作用。

有誰知道如何使這些指令有效?

問題是,不管是什么的時候了transclude函數執行嵌套的指令已經被編譯和備注。

我已經設法通過完全轉發transclude選項來實現這一點,並通過$templateRequest手動請求$templateRequest

我指定了一個編譯函數,它用一個注釋占位符替換該元素,以確保在請求期間不呈現任何內容。

在鏈接函數中,我手動編譯模板,然后用它替換指令的元素。

請參閱此處的更新示例: http//jsbin.com/rocedarono/3/edit?html,js,console,output

它當然不是最干凈/最優的解決方案,我對任何其他可以做得更好的解決方案持開放態度。 特別是因為任何DOM事件必須在$templateRequest promise被解析之后被綁定並且在$destroy事件中被刪除之前檢查是否存在以確保它事先被解析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM