记录一次原生微信小程序的picker标签在循环表单数据中的使用

上次这个picker坑我是在19年,没想到23年了依旧被这个数据回显给坑了好几个小时 

<view class="save-card-list">
			<view class="card-item" wx:for="{{wineList}}" wx:key="index" wx:for-item="item">
				<view class="delete-icon" bindtap="deleteWineTap" data-index="{{index}}">
					<view class="delete-sub"></view>
				</view>
				<view>
					<view class="card-row">
						<view class="save-text">产品</view>
						<input class="save-text" style="width: 550rpx;text-align: right;" bindinput="productNameInput" type="text" value="{{item.productName}}" placeholder="请输入" data-index="{{index}}" />
					</view>
					<view class="card-row">
						<view class="save-text">仓库</view>
						<picker class="picker-class" bindchange="bindPickerChange" mode="selector" value="{{item.id}}" range="{{item.objectArray}}" range-key="name" placeholder="请选择" data-index="{{index}}">
							<view class="picker">
								{{item.objectArray[wineList[index].warehouseIndex].name}}<view class="right-icon">></view>
							</view>
						</picker>
					</view>
					<view class="card-row">
						<view class="save-text">数量</view>
						<view class="wine">
							<input class="save-text" style="width: 130rpx;text-align: center;" bindinput="wineNumInput" type="text" value="{{item.wineNum}}" placeholder="请输入" data-index="{{index}}" />
							<view class="fg-line"></view>
							<view>
								<picker class="picker-wine" bindchange="bindWineChange" mode="selector" value="{{id}}" range="{{wineArray}}" range-key="unitName" data-index="{{index}}" data-id="{{wineArray[winIndex].id}}">
									<view class="picker-wine-show">
										{{item.wineArray[wineList[index].winIndex].unitName}}<view class="square"></view>
									</view>
								</picker>
							</view>
						</view>
					</view>
				</view>

			</view>
		</view>
		<view class="add-wine" bindtap="addWineTap">添加存酒</view>

const app = getApp();
var mychart;
Page({
  data: {
    barItem: {
      title: "存酒信息",
      navH: app.globalData.navHeight,
      navTop: app.globalData.navTop,
      navbH: app.globalData.navbHeight,
      csdy: {}
    },
    objectArray: [{
        id: 0,
        name: '1号存酒柜'
      },
      {
        id: 1,
        name: '2号存酒柜'
      },
      {
        id: 2,
        name: '3号存酒柜'
      },
      {
        id: 3,
        name: '4号存酒柜'
      }
    ],
    wineArray: [{
        id: '111',
        unitName: '瓶'
      },
      {
        id: '333',
        unitName: '箱'
      }
    ],
    warehouseIndex: '',
    winIndex: 0,
    wineList: []
  },

  onLoad(options) {
    this.addWineTap();
  },
  onShow() {

  },

  bindPickerChange(e) {
    var index = e.currentTarget.dataset.index;
    var wineList = this.data.wineList;
    wineList[index].warehouseIndex = Number(e.detail.value);
    this.setData({
      wineList,
    });
  },
  bindWineChange(e) {
    console.log(e)
    let index = e.currentTarget.dataset.index;
    let wineList = this.data.wineList;
    wineList[index].winIndex = Number(e.detail.value);
    this.setData({
      wineList,
    });
  },
  wineNumInput(e) {
    let index = e.currentTarget.dataset.index;
    let wineList = this.data.wineList;
    wineList[index].wineNum = e.detail.value;
    this.setData({
      wineList
    });
  },
  productNameInput(e) {
    let index = e.currentTarget.dataset.index;
    let wineList = this.data.wineList;
    wineList[index].productName = e.detail.value;
    this.setData({
      wineList
    });
  },
  addWineTap() {
    let wineList = this.data.wineList;
    wineList.push({
      productName: '',
      warehouse: '',
      warehouseName: '',
      wineNum: '',
      unit: '',
      unitName: '',
      objectArray: this.data.objectArray,
      wineArray: this.data.wineArray
    });
    this.setData({
      wineList
    });
  },
  deleteWineTap(e) {
    let index = e.currentTarget.dataset.index;
    let wineList = this.data.wineList;
    wineList.splice(index, 1);
    this.setData({
      wineList
    });
  },
  toBack() {
    wx.navigateBack({

    })
  },
})

 

 这是官方给的示例,这特喵能看出来个啥赋值呜呜呜

防止踩坑!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序原生 picker-view 是一种可以进行滚动选择的组件。它可以在小程序展示一个滚动的选择器,用户可以通过上下滑动来选择需要的选项。 使用 picker-view 的步骤如下: 1. 在 wxml 文件,通过<picker-view>标签来定义一个 picker-view 组件,可以通过style属性来设置它的样式。 2. 在 js 文件,首先需要通过页面的setData()方法来初始化 picker-view 组件的数据源,使用数组的形式来表示选项。 3. 在 wxml 文件,通过<picker-view-column>标签来定义 picker-view 的每一列。可以使用wx:for属性来循环渲染每一列的选项。 4. 在 js 文件,可以通过 onLoad()或者onShow()等生命周期方法来初始化 picker-view 组件的选项。可以通过setData()方法更新 selected 属性的值来改变选项。 5. 在 wxml 文件,通过<view>标签来定义一个按钮或者其他交互元素,通过bindtap属性来绑定事件处理函数。 6. 在 js 文件,实现事件处理函数,并通过setData()方法更新 selected 值以改变选项。 7. 可以通过onPickerChange()等事件来监听 picker-view 的选项改变的事件,并实现相应的逻辑。 需要注意的是,picker-view 组件的数组类型数据源,每一项都需要有value和text两个属性,分别表示选项的值和显示文本。 通过以上步骤,就可以在微信小程序使用原生 picker-view 组件实现选择器的功能。用户可以滚动选择选项,并通过自定义的事件处理函数来获取选项的值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值