[英]AngularJS : ng-if and ng-repeat not working after custom transclusion
我試圖在angularJS中自定義轉換指令,因為我需要將兩個單獨的元素轉換為兩個單獨的位置。
問題在於,雖然某些指令延續了被轉換的內容工作,例如ng-bind
其他如ng-if
或ng-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.