微信小程序多项选择与删除功能

废话不多数直接上代码!这是你们希望看到的吧,其实我也是懒,懒得想去说什么了。

 

wxml代码:

<view class="report-reason-list" >

<text wx:for = "{{items}}" wx:key="{{index}}" data-selected="{{index}}" class="{{isSelecte[index].selected ? 'cur' : ''}}" bindtap='chooseReason' data-index='{{index}}'> {{item.name}} </text>

</view>

样式就自己写吧(我太懒了)。

js代码:

items:[{ name: '交费入门'},{ name: '拉人头发展下线或代理' },{ name: '组成层级团队计酬' },{ name: '虚假宣传疗效' },{ name: '夸大宣传' },{ name: '宣称高利益' },{ name: '宣称只涨不跌' },{ name: '宣称利益保障' },{ name: '宣称金融互助' },{ name: '宣称爱心慈善模式' },{ name: '宣称消费返利' },{ name: '宣称游戏理财' },{ name: '宣称拆分盘模式' },{ name: '宣称原始股投资' },{ name: '山寨虚拟币区块链' },],

isSelecte: [{ selected: false },{ selected: false },{ selected: false },{ selected: false },{ selected: false },{ selected: false },{ selected: false },{ selected: false },{ selected: false },{ selected: false },{ selected: false },{ selected: false },{ selected: false },{ selected: false },]

(为了方便查看,都写在一行了)

data:{

reasonList: [],

}

chooseReason:function(e){

let that = this;

let event = e.currentTarget.dataset;

let index = event.index;

let copyeone = this.data.isSelecte

copyeone[index].selected = !copyeone[index].selected;

this.setData({

isSelecte: copyeone

})

//以下是这是过滤有效的被点击元素

let len = that.data.isSelecte.length;

let copytwo = [];

for (let i = 0; i < len; i++) {

if (that.data.isSelecte[i].selected) {

copytwo.push(that.data.items[i].name);

}

}

that.setData({

reasonList: copytwo

})

},

ok代码完成,讲解重点。

此处为思路:

第一步,将多选列表渲染(好像说的是废话)

第二步,将class做三目运算,isSelecte[index].selected == true即添加事先写好的类名“cur

第三步,js部分,在绑定事件chooseReason中,获取当前事件的索引值,同时用copyone数组保存或者说是过渡数组存放目标元素,改变数组copyone中对应的selected值为反(这样做的目的是即可以添加多选,又可以删除多选),最后把copyone在setData中传递给原数组isSelecte(我自己给它起名叫整体化一思想,因为各种尝试后发现setData中无法使用类似copyone[index].selected这样的结构,只能存放变量)。

第四步:过滤有效的被点击元素,也就是以上紫色代码

最后reasonList才是多选出来的元素集合数组。

遂整个过程到此结束。

多谢观赏。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值