2014-01-15 171 views
9

我有當有按鍵cliked是滑動的菜單,但在開始這個菜單是隱藏的,這樣的事情:ngShow讀取延遲問題

<div ng-show="menuShow"> 
    my menu here... 
</div> 

的問題是,當頁面加載菜單不隱藏(可能是因爲ngShow指令沒有加載),然後它們消失(可能是因爲ngShow指令被加載),並使菜單產生奇怪的「閃爍效果」。

處理這個問題的最佳方法是什麼?

+0

http://stackoverflow.com/questions/14068711/alternative-to-ng-show-hide-or-how-to-load-only-relevant-section-of-dom –

回答

16

最快最簡單的做法是將ngCloak指令添加到元素。

<div ng-show="menuShow" ng-cloak> 
    my menu here... 
</div> 

只要角在文檔的頭部同步加載,這應該防止閃爍。

如果你不加載角同步,那麼according to the docs,你可以手動將CSS添加到頁面:

[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak { 
    display: none !important; 
} 

如果這是不可能因爲某些原因,你可以你就必須全部Angular內容不在初始加載的頁面中,但包含在ng-include,ng-viewui-view指令中,或包含自己的模板的自定義指令。 (這是我怎麼做的,但更多的是因爲結構原因)

+0

嗨!我碰到了完全相同的問題,但是你的答案中的兩個選項對我來說都不起作用:(任何想法?http://stackoverflow.com/questions/30540119/how-to-remove-delay-from-ngshow -initialization –

+0

由於同步分化,這是一個很好的答案。在我的情況下,angular並沒有加載到頭部,所以我不得不手動添加CSS類。 –

1

即使應用CSS規則,我也無法獲得ng-cloak的工作,所以我最終使用了ng-ifhttps://docs.angularjs.org/api/ng/directive/ngIf

這將導致更多的開銷角實際上會從DOM中刪除的對象,每次都重新加載它的ng-if的值發生變化,但對我來說,這不是很頻繁,開銷並不明顯。