div の場合、次のng-class
ような式があります:ng-class="{error: msg.isError}"
と次のようng-show
な式があります:ng-show="msg.text"
明らかなように、msg.text
が空でない場合はdiv を表示し、msg.error
が true の場合はクラス 'error' を持ちます。
また、上映するときはいつでもフェードインしてほしいです。クラスが変更されていない場合はうまく機能しますがmsg.error
、 true に設定し、同時に の値を設定するとmsg.text
、アニメーションは発生しません。これが私の問題
のJSフィドルです。
これはhtmlです:
<div ng-app='app' ng-controller='cnt'>
<button ng-click="showText2()">This works</button>
<button ng-click="showText()">This doesn't work</button>
<button ng-click="clear()">Clear</button>
<div ng-show="msg.text" ng-class="{error: msg.isError}" class="fadein fadeout">{{ msg.text }}</div>
</div>
これはjsコードです:
app = angular.module('app',['ngAnimate']);
app.controller('cnt', function($scope){
$scope.showMsg = false;
$scope.msg = {
isError: false,
text: ""
};
$scope.clear = function(){
$scope.msg.isError = false;
$scope.msg.text = "";
}
$scope.showText = function(){ // This doesn't work
$scope.msg.isError = true;
$scope.msg.text = "text to fade in";
}
$scope.showText2 = function(){ // This works
$scope.msg.text = "text to fade in";
}
});