精华内容
下载资源
问答
  • 关于uniapp的多列选择
    千次阅读
    2020-12-09 17:09:21

    uniapp的picker组件 它的值如果是个对象数组的话怎么办

    三级联动为例

    <view class="uni-list-cell-db">
    	<!-- range 的必须绑定你的源数据 选择器列表中展示的数据   range-key 绑定的值必须加引号 必须为源数据中的唯一值   value 绑定的值是源数据的下标 -->
    	<picker mode="multiSelector" @columnchange="bindMultiPickerColumnChange" :value="multiIndex" :range="multiArray" :range-key="'region_name'">
    		
    		<view class="uni-input">{{multiArray[0][multiIndex[0]].region_name}},{{multiArray[1][multiIndex[1]].region_name}},{{multiArray[2][multiIndex[2]].region_name}}</view>
    	</picker>
    </view>
    
    multiArray // 源数据必须是二维数据   它的长度代表选择器的列数
    
    // 赋值数据时 必须更新视图 $forcUpdate
    
    // 剩下的看文档 很清楚
    
    更多相关内容
  • * 两种写法:for 和 switch,switch为三列选择器写法,for由switch精简拓展过来,可用于多列选择器 * swich写法:如果更改的是第一列数据,第二列数据通过filter筛选(parentId = 第一列选中项id),同时更新第三...

    代码分两部分,先上wxml

    <view class="container">
      <form catchsubmit="formSubmit">
        <view class="form-card">
          <view class="weui-cell weui-cell_input">
            <view class="weui-cell__hd">
              <view class="weui-label">物种<span>*</span></view>
            </view>
            <view class="weui-cell__bd">
              <picker mode="multiSelector" bindchange="bindMultiPickerChange" bindcolumnchange="bindMultiPickerColumnChange" value="{{multiIndex}}" range="{{multiArray}}">
                <view class="weui-input">{{multiArray[0][multiIndex[0]]}}{{multiArray[1][multiIndex[1]]}}{{multiArray[2][multiIndex[2]]}}</view>
              </picker>
            </view>
          </view>
        </view>
      </form>   
    </view>

    其次是js

    Page({
    
      /**
       * 页面的初始数据
       */
      data: {
        objectMultiShow: [],
        objectMultiArray: [],
        multiArray: [],
        multiIndex: [],
        checkeIndex: []
      },
    
      /**
       * 生命周期函数--监听页面加载
       * objectMultiShow--匹配多列选择器渲染数据所对应的json数据(包含id,parentId,name)
       * multiArray--多列选择器渲染数据
       */
      onLoad: function (options) {
        // 初始化
        let data = {
          objectMultiShow: this.data.objectMultiShow,
          objectMultiArray: this.data.objectMultiArray,
          multiArray: this.data.multiArray,
          multiIndex: this.data.multiIndex,
          checkeIndex: this.data.checkeIndex
        }
        data.objectMultiArray = [
          [{ id: 0, name: '无脊柱动物' }, { id: 1, name: '脊柱动物' }],
          [
            { id: 0, name: '扁性动物', parentId: 0 }, { id: 1, name: '线形动物', parentId: 0 }, { id: 2, name: '环节动物', parentId: 0 }, { id: 3, name: '软体动物', parentId: 0 }, { id: 4, name: '节肢动物', parentId: 0 },
            { id: 5, name: '鱼', parentId: 1 }, { id: 6, name: '两栖动物', parentId: 1 }, { id: 7, name: '爬行动物', parentId: 1 }
          ],
          [
            { id: 0, name: '猪肉绦虫', parentId: 0 }, { id: 1, name: '吸血虫', parentId: 0 },
            { id: 2, name: '蛔虫', parentId: 1 },
            { id: 3, name: '蚂蚁', parentId: 2 }, { id: 4, name: '蚂蟥', parentId: 2 },
            { id: 5, name: '河蚌', parentId: 3 }, { id: 6, name: '蜗牛', parentId: 3 }, { id: 7, name: '蛞蝓', parentId: 3 },
            { id: 8, name: '昆虫', parentId: 4 }, { id: 9, name: '甲壳动物', parentId: 4 }, { id: 10, name: '蛛形动物', parentId: 4 }, { id: 11, name: '多足动物', parentId: 4 },
            { id: 3, name: '鲫鱼', parentId: 5 }, { id: 4, name: '带鱼', parentId: 5 },
            { id: 3, name: '青蛙', parentId: 6 }, { id: 4, name: '娃娃鱼', parentId: 6 },
            { id: 3, name: '蜥蜴', parentId: 7 }, { id: 4, name: '龟', parentId: 7 }, { id: 4, name: '壁虎', parentId: 7 },
          ]
        ]
        data.objectMultiShow = data.objectMultiArray.map((item, index) => {
          if (index > 0) {
            item = item.filter(i => i.parentId === data.objectMultiArray[index - 1][0].id)
          }
          return item
        })
        data.multiArray = data.objectMultiShow.map(item => {
          item = item.map(i => i.name)
          return item
        })
        console.log(data.multiIndex)
        // 数据更新
        this.setData(data)
      },
    
      bindMultiPickerChange: function (e) {
        console.log('picker发送选择改变,携带值为', e.detail.value)
        this.setData({
          multiIndex: e.detail.value
        })
      },
      bindMultiPickerColumnChange: function (e) {
        console.log('修改的列为', e.detail.column, ',值为', e.detail.value);
        // 初始化数据
        var data = {
          objectMultiShow: this.data.objectMultiShow,
          multiArray: this.data.multiArray,
          multiIndex: this.data.multiIndex
        };
    
        // 改变第i列数据之后,后几列选择第0个选项(重置)
        data.multiIndex[e.detail.column] = e.detail.value;
        for (let i = e.detail.column; i < data.multiIndex.length - 1; i++) {
          data.multiIndex[i + 1] = 0
        }
    
        /**
         * 改变第i列数据之后,后几列数据更新
         * 两种写法:for 和 switch,switch为三列选择器写法,for由switch精简拓展过来,可用于多列选择器
         * swich写法:如果更改的是第一列数据,第二列数据通过filter筛选(parentId = 第一列选中项id),同时更新第三列数据
         *            如果更改的是第二列数据,更新第三列数据 通过filter筛选(parentId = 第二列选中项id)
         */
        let arry = this.data.objectMultiArray
        for (let i = e.detail.column; i < data.multiIndex.length - 1; i++) {
          data.objectMultiShow[i + 1] = arry[i + 1].filter(item => item.parentId === data.objectMultiShow[i][data.multiIndex[i]].id)
          data.multiArray[i + 1] = data.objectMultiShow[i + 1].map(item => item.name)
        }
        /*switch (e.detail.column) {
          case 0:
            data.objectMultiShow[1] = arry[1].filter(item => item.parentId === data.objectMultiShow[0][data.multiIndex[0]].id)
            data.multiArray[1] = data.objectMultiShow[1].map(item => item.name)
            data.objectMultiShow[2] = arry[2].filter(item => item.parentId === data.objectMultiShow[1][data.multiIndex[1]].id)
            data.multiArray[2] = data.objectMultiShow[2].map(item => item.name)
            break;
          case 1:
            data.objectMultiShow[2] = arry[2].filter(item => item.parentId === data.objectMultiShow[1][data.multiIndex[1]].id)
            data.multiArray[2] = data.objectMultiShow[2].map(item => item.name)
        }*/
        // 数据更新
        this.setData(data);
      }
    })

    wxml部分选用的官方组件--picker,根据官方文档mode=multiSelector,表示使用多列选择器。

    其他参数容我吐槽下:首先是range--绑定的二维数据,只能是字符串组成的二维数组,比如[["a","b"], ["c","d"]],这样的话多列选择器就是第一列a,b选项,第二列c,d选项。感觉很美。然而事实上这能干啥捏?我们做的多列选择器并不是只是页面展示,要跟后台对接数据的,就这样传字符串合适否?我需要的是带id之类的对象,而wxml页面又不支持双括号绑定数据里写map之类的函数方法。所以,我们后台传过来的数据要改造一下,提取其中的name为绑定数据。

    第二个就是value,本来以为这个是对应项中的第几个是这样的:a如果对应c,b如果对应d。选择bd应该就是[1, 1],而事实上是[1, 0]。也就是对应页面上展示的第几个对应(bd,页面上第一列有ab两个选项,第二列有且只有一个d)

    其他关于bindchange绑定的方法是点击确认按钮触发,bindcolumnchange绑定的方法是滑动多列选择器时候触发,至于bindcancel绑定感觉就是笑话,数据实时改变,取消需要再绑定一个中间值才能达到该有的效果,这里暂时没有做。

    js部分我使用了五个数据

    • objectMultiShow: []   选中带id的Object对象数组

    • objectMultiArray: []    后台带id,parentId对象数组

    • multiArray: []    微信小程序组件需求的字符串二维数组

    • multiIndex: []    微信小程序组件需求的选中对象数组

    • checkeIndex: []    基于bindcancel的中间值(暂时未做)

    为了达到我想到的真正的多列效果,我不惜出卖肉体,跟后台大哥达成的各种屈辱协议,获得了想要的数据格式第一列数组不带parentId,因为没有parent。第二列parentId对应第一列id,第三列parentId对应第二列id,如果还有多,可以依次类推。然后根据需求,依次从中获取所需的其他数据,完成数据初始化。

    然后在滑动多列选择器的时候,动态更新后一列的数据,我这里做的处理是更新后一列数据,并默认选择第一个选项

    详细注释写完,发现更多的是配置代码,具体的功能代码反而很少。

    个人感觉,小程序不是写代码,而是在配置选项搭建出来的。

     

    展开全文
  • Pycharm 小技巧 —— 列选择模式

    千次阅读 2019-09-06 18:47:13
    PyCharm 的 Column Selection Mode 提供了列选择功能。 使用: Ctrl + Alt + S进入设置 ,然后在输入框输入 column ,就会看到 Column Selection Mode ,可以看到 ,列选择模式的快捷键 列选择模式快捷键 :...

    PyCharm 的 Column Selection Mode 提供了列选择功能。

     

    使用:

    Ctrl + Alt + S 进入设置 ,然后在输入框输入 column ,就会看到 Column Selection Mode ,可以看到 ,列选择模式的快捷键

    列选择模式快捷键 Alt + Shift + Insert

    或者:Alt + 鼠标左键

    效果如下图:

     

     

    展开全文
  • uView的select列选择

    千次阅读 2021-05-21 13:58:36
    uView的select列选择器多列联动模式的坑! 需要写一个省 市 县的三级联动效果,第一行的第三列是空的,我拿到的第一行的第三列的数据是null 第一张图是我拿到的数据 第二张图是接口数据实现的效果 第三张图是我需要...

    uView的select列选择器多列联动模式的坑!

    需要写一个省 市 县的三级联动效果,第一行的第三列是空的,我拿到的第一行的第三列的数据是null

    第一张图是我拿到的数据通过接口拿到的数据
    第二张图是接口数据实现的效果
    实现的效果

    第三张图是我需要实现的效果(广东后一列显示空白,广西后一列正常显示)
    理想的实现效果

    解决办法:给第一行的第三列的数据的赋一个空值

    data[0].children[0].children = [{}]

    第四张图是处理之后的数据
    在这里插入图片描述

    展开全文
  • 微信小程序自定义多列选择器的使用

    万次阅读 多人点赞 2019-06-11 11:40:38
    微信小程序在自带的表单组件中加入了选择器picker,并给出了常用的时间和省市区三级联动选择器,但日常开发中不可能仅仅使用这些选择器,所以我们在学习时先写一个常见的自定义选择器来看一下。
  • weui 多列选择器实现

    千次阅读 2018-06-21 09:18:03
    weui 多列选择器实现,在单列选择器上多加一列,样式weui中已经实现demo:实现选择时间的两列选择器1.html&lt;a class="weui-cell weui-cell_access font14" href="javascript:;" onclick=&...
  • sublime 列选择

    千次阅读 2019-07-15 10:26:43
    模式 苹果:OS X -鼠标左键+Option -或者鼠标中键 -增加选择:Command,减少选择:Command+Shift 2 Windows: -鼠标右键+Shift -或者鼠标中键 -增加选择:Ctrl,减少选择:Alt ...
  • VSCode列选择快捷键

    万次阅读 多人点赞 2018-05-29 21:08:48
    这是一篇十分简短的博客,但是在某些情况下确实是十分有用的。VSCode列选择快捷键:Alt+Shift+左键来一张效果图:
  • Pandas 的行选择和列选择

    万次阅读 2018-10-16 10:18:35
    本文的数据来源:... import pandas as pd fandango = pd.read_csv('fandango_score_comparison.csv') 原始的数据如下(截取了一部分) ...行选择 ...Pandas进行行选择一般有三种方法: 连续多...
  • pycharm列选择

    千次阅读 2019-03-18 10:59:21
    快捷键Alt+Shift+Insert
  • VSCode 中进行列选择

    千次阅读 2019-06-02 13:49:15
    1. VSCode 中进行列选择? 最新版本: alt+鼠标点选 alt+shift+鼠标拖动 链接:#link
  • uniapp 自定义多列选择

    千次阅读 2019-11-30 10:12:57
    ... {{timeList[0][timesIndex[0]]}}:{{timeList[1][timesIndex[1]]}} data(){ ... console.log('picker发送选择改变,携带值为', e.target.value) this.timesIndex = e.target.value }, }
  • Pandas:行选择和列选择

    万次阅读 2018-07-24 16:05:06
    Pandas之容易让人混淆的行选择和列选择 在刚学Pandas时,行选择和列选择非常容易混淆,在这里进行一下讨论和归纳 本文的数据来源:https://github.com/fivethirtyeight/data/tree/master/fandango import pandas...
  • PhpStorm列选择列编辑

    千次阅读 2018-06-27 16:34:58
    选中isset,然后按Alt+J,往下,可以选中全部的isset按一下...empty,每一行都在改:还可以批量修改字段名:方法是:选中empty后,向右,移动到要统一添加t_前缀的字段那一,然后输入t_,所有字段都加上前缀t_了:...
  • Sublime Text按列选择(Column Selection) 列选择可用于选择文件的矩形区域。 列选择不通过单独的模式操作,而是使用多个选择。 您可以使用添加剂选择来选择多个文本块,或使用减色选择来删除块。 使用...
  • idea进入列选择模式

    千次阅读 2019-06-10 15:33:00
    shift + alt + insert 快捷键进入或退出列选择模式 进入列选择模式可以以列坐标选择一列或者多列 转载于:https://www.cnblogs.com/liuxia912/p/10997990.html
  • IDEA的列选择模式

    万次阅读 热门讨论 2018-08-30 20:47:19
    shift+alt+insert进入列选择模式,可选择一列或者多列 shift+alt+insert退出列选择模式
  • <template> <view> <pickermode="multiSelector" :range="cityList" :value="cityIndex" @change="bindCityChange"> <view> ...
  • PyCharm - Column Selection Mode (列选择模式 / 列复制粘贴) 1 *.py 文件右键 -> Column Selection Mode -> 鼠标垂直 (列) 选择文本 hotkey: Alt + Shift + Insert 2 列 / 块 复制粘贴 Ctrl + C: Copy ...
  • 省市区三级联动taro多列选择

    千次阅读 2019-11-05 14:14:33
    // 滑动选择了区 countyNum = evalue this . setState ( { value : [ provinceNum , cityNum , countyNum ] } , ( ) => { this . cityChange ( ) } ) } } cityChange ( ) { ...
  • VSCode列选择快捷键 来源 https://blog.csdn.net/Luyanc/article/details/80502069 VSCode列选择快捷键:Alt+Shift+左键 来一张效果图: 转载于:...
  • 转载自:https://www.cnblogs.com/inzaghihao/p/7844844.html小程序 picker 多列选择器 数据动态获取 需求是将各校区对应各班级的数据 以两列选择器的方式展示出来,并且可以在选择完成之后记录选结果参数。...
  • idea列选择快捷键,批量修改多行内容 方式1:按住shift + alt,鼠标左键选择多个位置或区域(可以多次选择)
  • 原生的省市区(mode=region)选择器只能获取汉字,不能定制每个省市的id,另外区选择器实际项目中没有使用到,思考下后选择手动修改多列选择器(mode=multiSelector)实现功能。 实现原理:multiArray是二维数组,...
  • 运用下面该方法可以任意定制自己的的选择器视图 -(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { view = [...
  • 在使用富文本编辑器的时候,通常模式是行选择状态,由于今天想使用EditPlus列选择状态, 于是通过在网上收集的资料,总结出相关富文本编辑器的列选择的方法。
  • 2019独角兽企业重金招聘Python工程师标准>>> ...Command + 鼠标中键(有些机子可能是左键): 可以手动选择同时要编辑的多处文本 转载于:https://my.oschina.net/u/2391658/blog/837594
  • 那么只想选择列中的代码(如下图),那么该如何进行选择呢? 点击edit->column selection mode,如下图: 点击后,选中模式就由横向选择变为选择,如果想再改为横向选择,再次点击edit->column ...
  • PyCharm使用技巧:Column Selection Mode(列选择模式)

    万次阅读 多人点赞 2017-07-02 19:46:52
    PyCharm的Column Selection Mode提供了列选择功能。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,557,045
精华内容 622,818
关键字:

列选择