微信小程序在一个页面中动态展示多个picker,并设置不同picker默认值,pick时能单独设定值。

微信小程序在一个页面中有多个picker时,且为动态生成picker默认值时,原生的picker需要设置多个index,如果把index设置成数组,并根据数组的位置,来动态生成是个好办法。

在piker中,添加新的数据属性:data-current="{{idx}}"

且把input 中 value 写成 value="{{area[areaIndex[idx]s]}}" 这样读取的就是areaindex数组中下标的位置。

<!--index.wxml-->
<view class="container">
  <view class="">
    <block wx:for="{{person}}" wx:for-item="item" wx:for-index="idx" wx:key="">
      <view class="i-for">
        <view class="i-left">姓名:{{item.name}}</view>
        <view class="i-left">姓别:{{item.sex}}</view>
      
      <view class="i-for2">
        <view class="i-left">区域选择:</view>
        <picker bindchange="bindPickerChange" value="{{areaIndex}}" data-current="{{idx}}" range="{{area}}" data-prearea="{{item.come}}">
          <view class="i-left">
            <input value="{{area[areaIndex[idx]]}}" disabled />
          </view>
        </picker>
      </view>
      </view>


    </block>

  </view>
</view>

 

//index.js
//获取应用实例
const app = getApp()

Page({
  data: {
    area:['亚洲','欧洲','非洲','南美洲','北美洲','澳洲','南极洲'],
    person:[
      { name: '王二', sex: '男', come:'欧洲'},
      { name: 'Tom', sex: '男', come: '亚洲' },
      { name: 'Black', sex: '女', come: '非洲' },
      { name: '马拉多纳', sex: '男', come: '北美洲' },
      { name: 'cruse', sex: '男', come: '南极洲' }
    ],
    areaIndex:[]
  },

  onLoad: function () {
    var lis =[]
    var area = this.data.area;
    var person = this.data.person;
    //把areaindex转变成数组。
    for(var i =0;i<person.length;i++){
      for (var j = 0; j < area.length;j++){
        //当person中的come和area中相等时,组成新数组
        if (person[i].come === area[j]){
          lis.push(j)
        }
      } 
    }
    this.setData({ areaIndex: lis })
    console.log(this.data.areaIndex)  
  },
  bindPickerChange:function(e){
    //解决当改变一个picker时,所有picker都改变的状况。
    var curindex = e.target.dataset.current;
    var curlist = this.data.areaIndex;
    //替换原来的数组中的元素
    curlist.splice(curindex,1,e.detail.value);
    this.setData({areaIndex:curlist})
  }
})

项目源代码在此

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 wx.createSelectorQuery() 方法来获取 picker 的值,例如:let query = wx.createSelectorQuery() query.select('#picker').fields({ value: true }, function(res) { console.log(res.value) }) query.exec() ### 回答2: 在微信小程序的JS文件获取Picker的值,首先需要在wxml文件定义一个Picker组件,例如: ```html <picker bindchange="pickerChange" value="{{pickerIndex}}" range="{{pickerArray}}"> <view>当前选择:{{pickerArray[pickerIndex]}}</view> </picker> ``` 其,bindchange绑定了一个事件处理函数pickerChange,value绑定了一个pickerIndex变量,range绑定了一个pickerArray数组作为可选项。 在JS文件,我们需要定义pickerChange函数来获取Picker的值,例如: ```javascript Page({ data: { pickerArray: ['选项1', '选项2', '选项3'], pickerIndex: 0 }, pickerChange: function(e) { var index = e.detail.value; // 获取选择的索引值 var value = this.data.pickerArray[index]; // 根据索引获取选择的值 console.log("选择的值为:" + value); } }) ``` 以上代码,我们定义了一个data对象,其pickerArray作为Picker的可选项数组,pickerIndex作为当前选择的索引。pickerChange函数接收一个事件对象e作为参数,可以通过e.detail.value获取Picker选择的索引值,然后根据索引值获取相应的值,并将其打印在控制台。 这样,在微信小程序的JS文件就可以获取Picker的值了。 ### 回答3: 在微信小程序的js文件获取picker的值,可以通过以下步骤实现: 1. 在wxml文件,定义一个picker组件,并设置id属性,以便在js文件获取该组件的值: ``` <picker mode="selector" range="{{array}}" bindchange="pickerChange" id="myPicker"> <view class="picker"> <view class="picker-text">{{currentValue}}</view> </view> </picker> ``` 2. 在js文件,首先需要在data定义一个空数组array,用于存储picker选项值,并设置currentValue变量用于显示当前选的值: ``` Page({ data: { array: [], // 用于存储picker选项值 currentValue: "" // 当前picker的选值 }, ... }) ``` 3. 在onLoad函数,通过setData方法给array数组赋值,例如: ``` Page({ data: { array: [], // 用于存储picker选项值 currentValue: "" // 当前picker的选值 }, onLoad: function() { let arr = ["选项1", "选项2", "选项3"]; // 设置picker选项值 this.setData({ array: arr }) }, ... }) ``` 4. 在pickerChange函数,通过e.detail.value获取当前选项的索引值,然后根据索引值在array数组找到对应的值,将其赋值给currentValue变量,并用setData方法更新数据: ``` Page({ data: { array: [], // 用于存储picker选项值 currentValue: "" // 当前picker的选值 }, onLoad: function() { let arr = ["选项1", "选项2", "选项3"]; // 设置picker选项值 this.setData({ array: arr }) }, pickerChange: function(e) { let index = e.detail.value; // 获取当前选项的索引值 let value = this.data.array[index]; // 根据索引值在array数组找到对应的值 this.setData({ currentValue: value // 将选的值赋给currentValue变量 }) } }) ``` 通过以上步骤,就可以在微信小程序的js文件成功获取picker的值,并根据需要进行处理或显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值