小程序开发——wx:for循环添加的元素怎么设置不同的样式

在编写一个页面的时候,总会遇到一组出了文字内容其它都相同的组件,这时候如果使用循环是非常方便的,微信小程序也有自己的解决方案。

我们可以通过使用wx:for='{{items}}'进行组件的重复渲染,在js文件中设置items的值就可以实现。但是,在动态地设置每一项的样式的时候,出问题了。

我们想要实现如下图所示的效果:

点击一项,背景变白,字体为橙色。在web开发中,可以直接改变style来完成相关操作,但是微信小程序不支持dom操作,只能另辟蹊径。

通过阅读官方文档,我们发现,小程序的数据绑定具有很强大的功能,可以动态地设置class名;而wx:for也拥有默认的index值,我们便可以从这方面下手。基本思路:当点击某一项的时候,我们在js中将对应index的值赋给一个变量current_item,然后通过三元运算符来判断使用哪一种样式。代码如下:

wxml:

 <view class="items {{current_item === index?'selected':' '}}"  bindtap='clicked'  
       wx:for="{{choose_items}}" data-key='{{index}}'>{{item}}  </view>

wxss:

.items{
  width: 100%;
  height: 100rpx;
  font-family: "微软雅黑";
  font-size: 32rpx;
  text-align: center;
  line-height: 100rpx;
}
.selected{
  background-color: #fff;
  color: rgb(247, 181, 120);
}

              js:

Page({

  /**
   * 页面的初始数据
   */
  data: {
    choose_items:[
      '推荐', '猜您喜欢', '热销爆款', '品质订制', '有机馆', '环球美食'
      
    ],
    current_item: 0,
  }
/**
 * 动态地给左侧导航栏添加点击变色样式
 */

  clicked:function(e){
    var that= this;
    let cuu=e.currentTarget.dataset.key;//获取index值
    console.log(cuu);
    that.setData({
      current_item: cuu
    })
  },
}

             关于index的值的获取,一个简单思路就是在wxml中把data-key的值设为{{index}},在js文件中通过currentTarget.dataset.key就可以获取到了。具体的可以参阅官方文档中框架——事件——target的说明。

 

  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值