Angular 带有淡入淡出表达式的 ng-show 不会删除 div
Angular ng-show with fade expression does not remove the div
我正在尝试显示一个 div,其中包含带有 ng-show 的错误消息以及 ng-class 设置为带有表达式的淡入淡出。消息在设置的时间后消失,但是,创建用于显示错误消息的 div 不会被删除。
我希望在消息消失时也删除创建的 div。有人可以帮忙吗?
这是我的代码笔 - link
这是我的 html
代码
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap.min.css" rel="stylesheet"
type="text/css" />
<section data-ng-app="app" class="container" data-ng-controller="messageController">
<hr />
<div data-ng-show="showError" ng-class="{fade:doFade}" class="alert alert-danger"><strong>Error:</strong> {{errorMessage}}</div>
<button data-ng-click="fakeError()" class="btn btn-default">Fake an Error</button>
<hr />
</section>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>
和JS代码
var app = angular.module('app',[]);
app.controller('messageController', ['$scope', '$timeout', function($scope, $timeout){
$scope.showError = false;
$scope.doFade = false;
$scope.fakeError = function(){
//reset
$scope.showError = false;
$scope.doFade = false;
$scope.showError = true;
$scope.errorMessage = 'We\'re mixing apples and oranges!';
$timeout(function(){
$scope.doFade = true;
}, 2500);
};
}]);
ng-show
仅在条件下设置样式显示,因此您的 div 将始终出现在页面中,仅在条件为假时不可见。
使用 ng-if
来有条件地 add/remove 元素。
为 ng-if 设置动画的最简单方法是使用 angular-animate 库。使用此库,您将可以控制各种指令的渲染阶段。
这些阶段通过特定的 css 类 进行标记,您可以针对这些阶段并设置样式
元素的过渡。
对于ng-if指令,有可用的类.ng-enter、。 ng-leave, .ng-enter-active, .ng-leave-active
通过这些 类 您可以定义所需的过渡,在您的情况下它是淡入淡出。
删除时淡化的示例:
https://codepen.io/anon/pen/NzyqvL
我正在尝试显示一个 div,其中包含带有 ng-show 的错误消息以及 ng-class 设置为带有表达式的淡入淡出。消息在设置的时间后消失,但是,创建用于显示错误消息的 div 不会被删除。
我希望在消息消失时也删除创建的 div。有人可以帮忙吗?
这是我的代码笔 - link
这是我的 html
代码 <link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap.min.css" rel="stylesheet"
type="text/css" />
<section data-ng-app="app" class="container" data-ng-controller="messageController">
<hr />
<div data-ng-show="showError" ng-class="{fade:doFade}" class="alert alert-danger"><strong>Error:</strong> {{errorMessage}}</div>
<button data-ng-click="fakeError()" class="btn btn-default">Fake an Error</button>
<hr />
</section>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>
和JS代码
var app = angular.module('app',[]);
app.controller('messageController', ['$scope', '$timeout', function($scope, $timeout){
$scope.showError = false;
$scope.doFade = false;
$scope.fakeError = function(){
//reset
$scope.showError = false;
$scope.doFade = false;
$scope.showError = true;
$scope.errorMessage = 'We\'re mixing apples and oranges!';
$timeout(function(){
$scope.doFade = true;
}, 2500);
};
}]);
ng-show
仅在条件下设置样式显示,因此您的 div 将始终出现在页面中,仅在条件为假时不可见。
使用 ng-if
来有条件地 add/remove 元素。
为 ng-if 设置动画的最简单方法是使用 angular-animate 库。使用此库,您将可以控制各种指令的渲染阶段。 这些阶段通过特定的 css 类 进行标记,您可以针对这些阶段并设置样式 元素的过渡。
对于ng-if指令,有可用的类.ng-enter、。 ng-leave, .ng-enter-active, .ng-leave-active
通过这些 类 您可以定义所需的过渡,在您的情况下它是淡入淡出。
删除时淡化的示例: https://codepen.io/anon/pen/NzyqvL