博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小程序循环多个picker选择器,实现动态增、减
阅读量:5991 次
发布时间:2019-06-20

本文共 3151 字,大约阅读时间需要 10 分钟。

现象

循环picker选择器,改变一个下拉框选项,导致全部下拉框选项改变;

问题

怎样操作才能实现只改变当前操作的下拉框的值?

思路

在js中设置一个数组变量,存储每个picker选择器默认的值;然后根据bingchange获取相应的索引、e.detail.value,根据这些更新数组,重新赋值,然后根据

数组的索引、值更新相应的picker索引以及值。

 

wxml

1 
2
3
销售品申请
4
5
6
7
8 { {objectArray[item.option].good_name}} 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
继续增加商品
25

 

js

1 data: { 2     salesList: []    //定义一个空数组 3   }, 4 //销售品删除一行 5   reduceSales: function (e) { 6     var that = this; 7     var index = e.currentTarget.dataset.index; 8     var list = that.data.salesList; 9     if (list.length === 1) {10       return;11     }12     list.splice(index, 1);13     this.setData({14       salesList: list15     })16   },17 //点击添加销售品18   addSales: function (e) {19     var that = this;20     var list = that.data.salesList;21     var r = /^\+?[1-9][0-9]*$/;  //正整数 22     var tip = '数量请输入正整数~~';23     for (var i = 0; i < list.length; ++i) {24       if (list[i].nums <= 0 || !r.test(list[i].nums)) {25         wx.showToast({26         title: tip,27         image: '../Image/error.png',28         duration: 200029       });30       return;31       }32     }33     var options = this.data.objectArray34     this.data.salesList.push({ id: options[0].id, nums: '', option: 0 })  //添加新行的时候nums初始为035     this.setData({36       salesList: this.data.salesList37     })38 39   },40 //销售品申请类41   bindPickerChange: function (e) {42     var arr = this.data.objectArray  //数组;43    var value = e.detail.value;     //数组子集44     var list = this.data.salesList;   //数组传递某一项的容器45    var index = e.currentTarget.dataset.index;  //索引46 47     list[index] = arr[value] //被选中数组的某一项赋给容器的相对应的某一项容器48 49     list[index].option = value  //数组子集赋给某一项相对应的容器索引50   this.setData({51       salesList: list52     })53   },54   //申请数量55   numChangeS: function (e) {56     var _that = this;57     var index = e.currentTarget.dataset.index;58     var list = this.data.salesList59     list[index].nums = e.detail.value60     this.setData({61       salesList: list62     })63   },64 65 // 页面初始化 options为页面跳转所带来的参数66   onLoad: function (options) {67     var that = this68     wx.request({69       url: 'https://....',70       method: 'GET',71       header: { 'content-type': 'application/json' },72       data: {},73       success: function (res) {   // success74         var options = res.data.goods;75         that.data.salesList.push({ id: options[0].id, nums: '', option: 0 })76         that.data.materielList.push({ id: options[0].id, nums: '', option: 0 })77         that.data.activesList.push({ id: options[0].id, option: 0 })78         that.setData({79           objectArray: options,80           salesList: that.data.salesList,81         })82       },83     })84   },

 

 

参考网址:https://www.cnblogs.com/JinQing/p/6673665.html

你可能感兴趣的文章
缓存篇(Cache)~大话开篇
查看>>
看SQL SERVER数据库当前连接数
查看>>
LintCode: Restore IP Address
查看>>
LintCode: Valid Parentheses
查看>>
事件引入和本质
查看>>
apiCloud事件发送与监听
查看>>
成功是什么?
查看>>
Ext.form 表单为什么第二次就不正常显示
查看>>
SQL Server Collation介绍及其变更对数据的影响
查看>>
CSS魔法堂:重新认识Box Model、IFC、BFC和Collapsing margins
查看>>
Android Studio 中报 【gradle project sync failed】 错误解决方法
查看>>
oracle 【数据库 库软件(变量编写)】安装
查看>>
关于 Mybatis 设置懒加载无效的问题
查看>>
ubuntu下sqlplus上下光标键乱码解决方法
查看>>
提取Word中指定内容
查看>>
Json处理换行符
查看>>
jquery获取选中的select,选中的radio值
查看>>
jsp之指令元素page和include
查看>>
git命令合集
查看>>
VC项目配置基础
查看>>