小程序在for循环里面使用同一个动画,点击具体子项(再加载动画),不会全部同步

1.data里面

    selectIndex:-1, //选择的子项(-1是未选择)
    beforeIndex:-1, //前一个选择
    animationDataB:[], //动画数组

2.js

    selectToggle:function(e){
       
              var nowIndex=e.currentTarget.dataset.index;//获取当前点击的子项index
              //如果点击同一个两次,select变为初设值-1
              if(nowIndex==this.data.selectIndex){
                  this.setData({
                      selectIndex: -1,
                  })
              } else{
                  this.setData({
                      selectIndex: nowIndex,
                  })
              }


              //创建动画
              var animation = wx.createAnimation({
                  timingFunction:"ease"
              })

              this.animation=animation;
              
              if(this.data.selectIndex==-1){
                  animation.rotate(0).step(); //箭头向上(初始样子)
                  this.data.animationDataB[nowIndex]=animation.export(); //导出动画队列。
                  this.setData({
                      animationDataB:  this.data.animationDataB,      //重新渲染动画数组
                  })
                
              }else{
                  animation.rotate(180).step();                //箭头向下
                  this.data.animationDataB[nowIndex]=animation.export(); //导出当前选择子项的动画队列
  //前一个选择的箭头复原,前后两次点击不是同一个子项,不是第一次点击,beforeIndex还未被赋值
                  if(this.data.beforeIndex!=nowIndex&&this.data.beforeIndex!==-1){
                      animation.rotate(0).step();
                      this.data.animationDataB[this.data.beforeIndex]=animation.export();
                  }
                 this.setData({
                    animationDataB: this.data.animationDataB,
                 })
              }

//记录前一个点击子项的index
            this.setData({
               beforeIndex:nowIndex          
            })
          },

3.wxml

<view wx:for="{{order.chr}}" wx:key="index" wx:for-item = "item" wx-for:index="index">

<!-- 子项     -->     
     <view bindtap='selectToggle' data-index="{{index}}">
        <view class="flex space-between">
          <text>子项名称</text>     

<!-- 箭头,动画     -->         
          <image src="../../img/down.png" class="down-icon"  animation="{{animationDataB[index]}}" >  </image>
                </view>
        
            </view>
      
            <view wx:if="{{selectIndex == index}}" >
                   隐藏内容(点击之后显示)
            </view>
            
    </view>

注:export 方法每次调用后会清掉之前的动画操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值