2017-09-15 2 views
1

ng-clickng-ifのディレクティブが同じdivにあります。ng-if = 'false'がDIVを隠しています

click変数は最初にfalseに設定されているため、ボックス DIVは表示されません。 clicktrueに設定するか、ng-ifディレクティブに!clickを使用すると、ボックス DIVが表示されますが、クリックするとアニメーションが表示されません。

ボックスからng-clickを削除し、それを別のDIVまたはボタンに追加してトグルを行うと、アニメーションが機能します。ただし、ボックス DIVは最初は隠されていて、アニメーションの実行後も消えます。

HTML

<div ng-app="animationApp" ng-controller="c1"> 

    <div ng-click="click=!click" ng-if="click" class="box"></div> 

</div> 

JS

angular.module('animationApp', ['ngAnimate']) 

    .controller('c1', function ($scope, $animate, $timeout) { 

     $scope.click = false; 

}) 

; 

CSS

.box { 
    width: 40px; 
    height: 40px; 
    background-color: indianred; 
} 

.box.ng-enter { 
    -webkit-transition: all 0.35s ease; 
    transition: all 0.35s ease; 
    transform: rotateZ(0deg); 
} 

.box.ng-enter-active { 
    transform: rotateZ(-180deg); 
} 

.box.ng-leave { 
    -webkit-transition: all 0.35s ease; 
    transition: all 0.35s ease; 
    transform: rotateZ(-180deg); 
} 

.box.ng-leave-active { 
    transform: rotateZ(0deg); 
} 

デモ https://jsfiddle.net/ae8kwzxg/93/

+0

については、ちょうどng-に変更する方法if = "!click"? – Ben

答えて

2

この行は何もしないです:"ng-click="click=!click"

あなたの$scope.click変数がプリミティブ型(bool)なので、なぜ機能しないのでしょうか。これは、この行にあることを意味します:ng-click="click=!click"変数をクリックすると、$scope.click変数のコピーであり、コピーは変更されますが、実際の$scope.clickは変更されません。 $scope.click変数をオブジェクトに変更する場合は、たとえば$scope.click = {active:true} と変更し、HTMLを<div ng-click="click.active=!click.active" ng-if="click.active" class="box"></div> に変更します。

しかし、より良い方法は、常に機能で割り当てを行うされています

​​

そして、あなたのコントローラは次のようになります。

angular.module('animationApp', ['ngAnimate']) 

    .controller('c1', function ($scope, $animate, $timeout) { 

     $scope.click = true; 

     $scope.clicked = function(){ 
      $scope.click = !$scope.click; 
     } 
}) 

これは実施例である:https://jsfiddle.net/ae8kwzxg/94/

+0

説明と修正をありがとう。しかし、アニメーションの後、DIVは消えます。なぜこれはそうですか?この動作はng-leaveではありません。何が消えてしまい、どうすればこれを防ぐことができますか? – user1449456

+1

したがって、ng-classバインディングを使用してください。クラスをバインドして、CSSクラスセレクターを角度クラスからカスタムクラス名に変更してください –

+1

この画像回転のデモをご覧ください:https://codepen.io/runamuk0/pen/OPNXyV。 –

関連する問題