AngularJs:如何在值变化时启动动画(ng-scope)
AngularJs: How to start animation on value change (ng-scope)
假设我有一个模板:
<div ng-controller="ValueCtrl">
<dl>
<dt>Points</dt>
<dd>{{ points }}</dd>
</dl>
</div>
和一个控制器:
app.controller('ValueCtrl', function($scope) {
$scope.points = 100;
$scope.$on('points:changed', function(newPoints) {
$scope.points = newPoints;
});
});
在我的应用程序中,我使用动画.css来自 http://daneden.github.io/animate.css/。
我想points
值更改动画。虽然我可以通过 Javascript 向元素添加animated pulse
CSS 类,但我不想直接从控制器操作 DOM。
有没有一种简单的方法可以通过 CSS 检测更改?使用ng-repeat
或ng-show
等时。我可以通过使用CSS类(如ng-enter
,ng-leave
等)来检测它们。有没有办法检测绑定到范围的元素的类似事件?
要走的方法是使用 ng-class
使类以作用域变量为条件(我将使用 $scope.changed
,一个布尔值)。
.HTML
<dl>
<dt>Points</dt>
<dd ng-class="{'animated bounce' : changed}">{{ points }}</dd>
</dl>
由于 animate.css
lib 无法重置$scope.changed
信号变量,因此我们必须在一定时间后执行此操作,因此后续更改能够触发动画。
爪哇语
$scope.$on('points:changed', function(event, newPoints) {
$scope.points = newPoints.points;
$scope.changed = true;
$timeout(function() {
$scope.changed = false;
}, 1000);
});
我在这里创建了一个完整的示例作为 JSBin。
相关文章:
- 当元素在屏幕中占60%时,WOW.js启动动画
- 使用带有onclick事件的Javascript启动CSS3动画
- AngularJS指令中的动画,事件未启动
- jQuery mouseout动画仅在第二次悬停后启动
- Skrollr.js在向上滚动时启动另一个动画
- 在追加和删除元素时启动 CSS 动画
- 在css3页面淡入后启动javascript以使动画更流畅
- 在 HTML 页面中嵌入动画 SVG,暂停(不启动动画)
- 停止并重新启动 CSS3 动画
- 在调整窗口大小时停止/重新启动动画循环
- 单击时重新启动音频和动画
- 三.js对象启动动画/游戏循环
- 在不重新加载文件的情况下重新启动 gif 动画
- 在wordpress中,在页面完全加载后启动动画
- 如何在脉冲动画停止后启动脉冲动画
- 使用带有突发引擎和画布的“开始”按钮重新启动动画
- 如何让动画在视口中启动一次
- SVG 动画在加载设置超时时不会启动
- 动画启动不正常
- Android:如何在加载资源时显示动画启动画面