[英]Only allowing a Javascript function to run when the previous function has finished
[英]Run a javascript function when Angular has 'finished'
“完成”是指所有數據綁定均已完成,並且Angular javascript無需運行任何操作(直到用戶與DOM交互)。
我需要調用一個已有的javascript函數(fwiw,只需切換幾個div的顯示)。
我嘗試過的
我想嘗試避免使用超時:
http://blog.brunoscopelliti.com/run-a-directive-after-the-dom-has-finished-rendering/
角度需要花費多長時間是任意的,並且對我來說准確地使用時間間隔取決於太多。
我也嘗試過app.run(function()....
,但是運行太早了!
編輯(為澄清)
將這種情況想象為2格。
<div class="static">SOME CONTENT</div>
和
<div class="angular">{{ someContent }}</div>
在頁面加載(最初)時,用戶將看到{{ someContent }}
直到Angular完成為止。 我想隱藏此角度div,只顯示靜態div,然后交換它們(即,靜態變為隱藏,角度變為可見),一旦{{ someContent }}
呈現出來。 我想做的事情確實非常簡單, ng-show
聽起來可能是一個解決方案-但我不確定如何使用它。
如果app.run(function() { ... });
為時過早,並且您不想使用$timeout
也許您應該重構要調用的javascript函數並以有角度的方式進行操作 。
如果僅是切換div可見性,請考慮使用ng-show / ng-hide
。 您還可以使用ng-if
有條件地刪除或重新創建dom樹的一部分。 這取決於功能的目的,也許自定義指令適合您的情況。
如果要在填充變量數據后顯示一些變量數據的示例:
<div ng-if='myVar'>
<span>{{myVar}}</span>
</div>
根據編輯的問題進行了更新:
<div ng-if='!myVar' class='static'>
<span>STATIC CONTENT</span>
</div>
<div ng-if='myVar' class='angular'>
<span>{{myVar}}</span>
</div>
ng-show/ng-hide
可能再次起作用,但請不要忘記它們僅切換元素的可見性。 如果條件已驗證或未驗證, ng-if
將刪除/重新創建元素。
//using ng-if
<div ng-if="!someContent" class="static">SOME CONTENT</div>
<div ng-if="someContent" class="angular">{{ someContent }}</div>
//using ng-hide/show
<div ng-hide="someContent" class="static">SOME CONTENT</div>
<div ng-show="someContent" class="angular">{{ someContent }}</div>
這聞起來像是反模式。 您為什么要切換這些div? 在上下文中使用指令可能更有意義。
無論如何,如果您認為這樣做有充分的理由,則可以使用$applyAsync(yourFunction)
安排要運行的函數。
$applyAsync
將使該函數排隊,以便以后執行。 如果在$scope
初始化期間放置了該函數,則函數將在其余觀察者執行后運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.