我有一個指令,在連接函數中操縱Dom。在它內部的另一個指令,我需要它的鏈接功能,在父指令完成其Dom操作後觸發。例如,我將屬性賦給了父鏈接函數中的作用域,但是在子指令中作用域沒有這些屬性(作用域不是孤立的,我需要修改鏈接函數中的作用域,以便訪問該元素)指令中的指令鏈接函數同步
0
A
回答
1
對於指令,link
(與post-link
相同)的執行順序相反。這意味着對於以下情況:
<span l1-dir><span l2-dir></span></span>
首先調用子指令的鏈接函數,然後調用父指令鏈接。我們很幸運,因爲我們也有pre-link
函數,它按照指令定義的順序調用。
在我們的例子中,第一個指令的pre-link
函數被調用,然後是第二個函數的pre-link
函數。
您可以在pre-link
功能從父指令移動DOM操作邏輯(先分成pre
和post
):
return {
restrict: 'A',
compile: function compile(tElement, tAttrs, transclude) {
return {
pre: function preLink(scope, iElement, iAttrs, controller) { //parent directive logic for DOM manipulation
},
post: //nothing
}
}
這保證了孩子的post-link
部分從父指示你的DOM操作指令將完成。
0
只是一個$超時結束後,以0在你的「家長」指令添加到NG-如果您的孩子的指令,並將其設置爲true,像這樣:
/*above should be placed all your parent directive link function code... the $timeout should be
executed after your parent directive code*/
$timeout(function(){
showChildDirective = "true";
}, 0);
這樣,你將執行你的父指令的所有任務($超時將被放置在鏈接函數的底部),並且你將能夠等待下一個$ digest循環完成, 所以你所有的綁定到DOM將比較勒特。
相關問題
- 1. 如何從子指令的鏈接函數調用父指令鏈接函數
- 2. 在angularjs指令中的鏈接指令
- 3. Angular指令鏈接函數onload
- 4. Angularjs指令鏈接
- 5. 角度同步指令?
- 6. 在另一個指令的鏈接功能中添加指令
- 7. 指令中的重新連接指令
- 8. 混淆了angularjs指令的鏈接函數中的屬性
- 9. 指令AngularJs中的鏈接函數的訪問範圍?
- 10. anglarjs指令鏈接函數不從編譯函數調用
- 11. 指令中的異步HostBinding
- 12. 在父指令中觸發子指令中的函數[angularJS]
- 13. 爲什麼不能在指令的鏈接函數中編譯?
- 14. ng-init不能在指令的鏈接函數中工作嗎?
- 15. AngularJS 1.3指令鏈接函數中的$ get.Constructor {}如何?
- 16. ng-controller變量在指令的鏈接函數中不可見
- 17. 在指令鏈接函數中使用$ mdDialog的AngularJS材質
- 18. 如何在角度指令的鏈接函數中通過$ filter
- 19. 指令中的指令
- 20. 指令中的指令
- 21. 數據指令中的MIPS指令
- 22. 將函數發送到指令中的指令
- 23. 從子指令調用父指令中的函數
- 24. 在指令鏈接函數中測試$ resource.get params
- 25. Angular js:element.val在指令鏈接函數中不起作用
- 26. 如何在指令鏈接函數中單元測試Angular routeChangeSuccess?
- 27. Angular自定義指令鏈接函數不會接受'restrict'
- 28. 是否使用了指令的鏈接函數的返回值?
- 29. 重寫指令的鏈接函數的一些部分
- 30. AngularJS指令 - 多重指令同名
這適用於我。謝謝。 –