我尝试将使用 jQuery 编码的应用转换为使用 Angular 的应用<\ n> / em>的。
我在一个名为categories
的变量中有一些包含类似数据的数组:
.controller('AppController', function($scope,$timeout){
var self=this;
self.categories=[[],[],[]];
self.selected=0;
setInterval(getNewItems,500);
});
我使用ng-repeat
显示数据:
<div id="numbers">
<div class="slide" ng-repeat="number in app.categories[app.selected]">{{number}}</div>
</div>
让用户使用以下导航切换所选类别:
<li ng-repeat="category in app.categories">
<a href="#" ng-click="app.selected=$index">
Array #{{$index}}: {{category.length}} items
</a>
</li>
当服务器向阵列发送新项目以及删除旧项目时,需要有动画。使用ngAnimate
:
.animation('.slide',function(){
return{
enter:function($e,done){
var height=$e.height();
$e.css({
left:$e.parent().width(),
height:0
}).animate({
left:0,
height:height
},done);
},
leave:function($e,done){
$e.animate({
left:-$e.parent().width(),
height:0
});
},
move:function($e,done){
done()
}
}
});
添加/删除元素时的动画效果很好,如此小提琴所示:https://jsfiddle.net/ilpo/ukq7ehca/。但是,当在数组之间切换时,与我之前使用jQuery实现的动画相比,动画是丑陋的:https://jsfiddle.net/ilpo/14qtm70z/1/。我不希望阵列中的每个元素同时滑动,我希望它们以50ms的间隔逐个离开/进入,如第二小提琴所示。 这在Angular中是否可行?我是否可能需要更改页面结构才能实现它?
此外,如果你建议我在使用 Angular 时从 jQuery动画切换到 CSS动画 ...请还会显示如何使用height
缓动曲线为0
到auto
添加的元素的ease-in-out
设置动画。与上面的小提琴不同,实际应用中的数据可能是多行长。否则,只有 jQuery动画解决方案,请:)
答案 0 :(得分:0)
你可以尝试两件事:
1 - ng-class在您的元素上设置动画
<myElement ng-class="{myanimatedclass : myCTRL.myboolean1}"></my-element>
<myElement ng-class="{myanimatedclass : myCTRL.myboolean2}"></my-element>
2 - 在您的控制器中,您可以设置每个布尔值的间隔
function myController() {
vm = this;
vm.myboolean1 = false;
vm.myboolean2 = false;
function boolean1totru() {
vm.myboolean1 = true;
}
function boolean2totru() {
vm.myboolean2 = true;
}
function init() {
setInterval(boolean1totrue,500);
setInterval(boolean2totrue,1000);
}
}