2016-11-03 12 views
0

これはAngularJSの私の最初の個人的なプロジェクトなので、コード上に明白なものがあり、私はそれを見ることができません。AngularJSで情報ボックスを切り替える

私は2つのdivを持っていて、それぞれにアイコンがあります。最初は情報アイコンがあり、もう1つは終了アイコンです。

<div class="info" ng-show="myCtrl.showInfo"> 
    <i class="fa fa-close" ng-click="myCtrl.toggleInfo()"></i> 
    <p>Lorem ipsum....</p> 
</div> 

<div class="settings" ng-show="myCtrl.showInfo"> 
    <i class="fa fa-close" ng-click="myCtrl.toggleInfo()"></i> 
    <p>Lorem ipsum....</p> 
</div> 

exitまたはinfoアイコンをクリックすると、最初のdivの表示と非表示を切り替えることができます。ここに私のコントローラの関連部分は次のとおりです。

myCtrl.showInfo = true; 

myCtrl.toggleInfo = function() { 
    myCtrl.showInfo ^= myCtrl.showInfo; 
} 

それは、最初のクリックで動作しますが、その後の値myCtrl.showInfofalseから0になって、それが働いて停止します。

バージョン:1.5.8

+0

フルコードを表示 – Sajeetharan

答えて

1

何のロジックは、表示/非表示以外のこの行動に結びついていない場合は、あなたのコントローラには機能がなくてもそれを実行できます。

<div class="settings" ng-show="myCtrl.showInfo"> 
    <i class="fa fa-close" ng-click="myCtrl.showInfo = !myCtrl.showInfo"></i> 
    <p>Lorem ipsum....</p> 
</div> 
+0

これはうまくいくと思われますが、よりクリーンな方法です。ありがとうございました。 SO – Tasos

+0

のタイムリミット後に答えを受け入れるでしょう@コントローラー内のコードを持つTasosはテンプレート上ではなく、よりテスト可能にするでしょうか?また不必要にそれはあなたのテンプレートを混乱させます –

0

角度は、あなたは!を使用して以下にそれを修正しない、間違ったトグル式を持っていました。代わりにng-showと変更コントローラ機能の

myCtrl.toggleInfo = function() { 
    myCtrl.showInfo = !myCtrl.showInfo; 
} 
0

使用ng-if

<div class="info" ng-if="myCtrl.showInfo"> 
    <i class="fa fa-close" ng-click="myCtrl.toggleInfo()"></i> 
    <p>Lorem ipsum....</p> 
</div> 

<div class="settings" ng-if="!myCtrl.showInfo"> 
    <i class="fa fa-close" ng-click="myCtrl.toggleInfo()"></i> 
    <p>Lorem ipsum....</p> 
</div> 

//コントローラ

myCtrl.showInfo = true; 

myCtrl.toggleInfo = function() { 
    myCtrl.showInfo != myCtrl.showInfo; 
} 
関連する問題