2012-11-17 7 views
17

私の項目リストが空のときに表示したいdiv要素があります。だから私は次のように(ハムルで)入れます:ng-cloakとng-showは画面上の隠し要素を点滅します

#no-items.ng-cloak{ :ng_show => "items.length <= 0", :ng_cloak => true } 

しかし、私が行った後でも、要素はまだ画面上で点滅しています。その後私はAngularjs - ng-cloak/ng-show elements blinkを見ましたが、私のCSSで次のものを追加した後でさえ、まばたきがまだ発生します。

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

私が間違っていることは何ですか?

+0

。私の推測では、あなたはあなたのハメルに何か間違っていると思います。私はそれを使用しないので、私は何を伝えることはできません。ブラウザでデバッグするだけです。角度アプリを実行せずにページを読み込みます。 HTMLは期待通りですか?それは隠されていますか? – 34m0

答えて

10

上記のng-cloak CSSがページの先頭にロードされていることを確認してください。

これは、あなたがする必要があるすべてでなければなりません:

<div ng-hide="items.length" ng-cloak>no items</div> 

サンプル。

34

一度読み込んだJSの動作に影響を与えずに、ng-hideをクラスに追加できます。しかし、JSをロードするのを待っている間にCSSがそれを考慮に入れるように、そこに置くと便利です。

<div data-ng-controller="RoomsController"> 
<div ng-cloak class="ng-cloak ng-hide" data-ng-if="visible" > 
    Some text 
</div>   
</div> 
1

解決策のどれも私のために働いていませんでした。私が見つけた唯一の解決策は、以下である:

$scope.$on('$viewContentLoaded', function() { 
      $scope.completed = true; 
});    

を、各ビューのHTMLでは、-NGの場合=は最上位の要素に「完了」を追加:各コントローラにおいて

、追加。たとえば、次のように

<div ng-if="completed"> 

注:この問題は、FirefoxのUI-ルータに制限されています。そこでは、ng-cloakは無視され、cssの回避策はありません。私のために働いた唯一の解決策は、私が上に与えたものです。

関連する問題