3

How to ng-hide and ng-show views using angular ui routerはここで説明したように、私は次のようなマークアップがあります。今、私は両方のdivが表示されている2つの状態の間で切り替えるとき

.container { 
    display: flex; 
    flex-direction: column; 
} 

CSSのフレックスボックスを使用して
<div class='container'> 
    <div ng-show='$state.includes('state1')></div> 
    <div ng-show='$state.includes('state2')></div> 
</div> 

を目の瞬きのために醜い点滅効果をもたらす。

Angularjs - ng-cloak/ng-show elements blinkからng-cloakを試しましたが、成功しませんでした。

私はui-router-extrasから 'スティッキーステート'を使用しているため、ng-ifを使用することはできません。これには、DOMを維持する必要があります。

+0

'ng-animate'で' ng-show'をアニメーション化しようとしましたか?例。 '.ng-hide-add {アニメーション:0.5s showdiv ease; } .ng-hide-remove {アニメーション:0.5s hideDiv ease; } ' – Erevald

+0

デフォルトで非表示にするには、代わりのcssクラスを使用します。 '

' default-hideは 'display:none'を持つべきですが'!important'を避けてください。 –

+0

hide-addは遅延しますが、hide-removeは遅延しません。時間を2秒程度に設定すると、点滅が長い点滅に変わります。それはすてきな解決策を示していますが、非表示を非表示にして隠すのを遅らせることで表示されます。私はこれを働かせることができません。 – Stefan

答えて

0

$stateでは)そう

1)あなたはCtrlキー

$scope.state = $state; 

をこのような何かを行うことができますHTMLで使用する使用することはできませんが、私はこの

2をお勧めしません。 HTML

<div class='container'> 
    <div ng-show="showThis('state1')"></div> 
    <div ng-show="showThis('state2')"></div> 
</div> 

コントローラ内

あなたはすでにあなたはNG-マントを試してみましたことを言及していても
$scope.showThis = function(type){ 
    return $state.includes(type); 
} 
+0

ありがとうございました。私はあなたの最初のオプションを使用します。オプション2では、問題は残ります。 – Stefan

0

、私はあなたの問題に対する正しい答えは確かでNG-マントであることを考える:

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

スタイル設定。あなたが「NG-マント」ディレクティブを追加した場合I have made an example on CodePen.io that show exaclty this solution working with Angular UI Router.あなたが述べたように、あなたが、例の全景が点滅を見ることができるようにしかし、:

その後になります
<div ng-app="myApp"> 

<div ng-app="myApp" ng-cloak> 

あなたはそれが表示されますAngular protects the view from being showed (blinking).それはまさに 'ng-cloak'指令の目的です。

この例は、あなたが問題を解決するのに役立ちます。

+0

CodePenに感謝します。残念ながら、それは動作しません。私はペンでng-cloakを取り除くと、ちらつきは見えません。 – Stefan

0

ng-styleを使用すると、フリッカー効果を削除できます。

<div class='container'> 
    <div ng-style="{'display': $state.includes('state1') ? 'block' : 'none'}"></div> 
    <div ng-style="{'display': $state.includes('state2') ? 'block' : 'none'}"></div> 
</div> 

ng-showがスティッキー状態でフリッカー効果を引き起こす理由はわかりませんが、この回避策で問題が解決されます。

関連する問題