首页编程iview,基于iView 的树选择器组件

iview,基于iView 的树选择器组件

编程之家2023-11-0496次浏览

无论是iview还是基于iView 的树选择器组件,它们都是当前热门话题。如果你对它们感到好奇,那么请跟随小编的脚步,一起来揭开它们的秘密吧!

iview,基于iView 的树选择器组件

基于iView 的树选择器组件

产品最近提了一个需要三级选择器才能实现的需求,看了iView和Element-UI,没有找到合适的组件,然后做了一个基于iView的TreeSelect组件。

github地址: https://github.com/FFFFF1/vue-super-tree-select

install安装

iview,基于iView 的树选择器组件

npm install vue-super-tree-select--save

Usage示例

该组件是基于iView的,请事先use iView与其CSS;

iview,基于iView 的树选择器组件

如果出现下拉框被其他组件遮盖时,请自行修改.content-box的z-index值(默认为100);

 

import superTreeSelect from'vue-super-tree-select'

export default{

  components:{superTreeSelect},

  data(){

   return{

    model_: [

   { title:'豆浆'},

   { title:'油条'}

    ],

    data_: [

    {

      title:'早餐',

      children: [

      {

        title:'北方',

        children: [

        {title:'豆浆'},

        {title:'油条'}

        ]

      },

      {

        title:'南方',

        children: [

        {title:'肠粉'},

        {title:'虾饺'}

        ]

      }

      ]

    }

    ]

  }

 }

}

config配置项

属性说明类型默认值

pkey设置每一个节点的唯一标识Stringtitle

v-model存放组件中选择的最底层节点信息,每个节点信息会自动加上一个value属性,记录其所有父节点的pkey值类似于:'id1/id2/id3'Array/

data组件中所有的选择项,格式请参照示例Array/

searchable是否可搜索,设置该属性为true时,可以根据子节点的title进行搜索Booleanfalse

clearable是否可清空Booleanfalse

width设置组件的宽度String300

iview内存泄漏

iview在升级到view-design之前,是存在严重的内存泄漏问题的,而如果你在项目中大量使用了iview组件,就可能面临大量的升级工作要做,因为样式很多是不兼容的。

我们今天就看一下iview的源码,看看到底问题在哪里?为什么会导致内存泄漏?

首先进入iview官网 https://iview.github.io/,安装老版iview2.0。

我们看一下常用的table组件吧:

我们可以看到,在beforeDestory周期中,只释放了挂载的resize事件,并未释放this下注册的自定义事件on-visible-change,这就会导致运行一段时间,this下挂载的自定义事件越来越多,从而导致内存的泄漏。

我们再看看升级后的view-design:

我们一定要重视beforeDestroy生命周期的作用,将dom的引用、所有注册的事件都要释放掉,防止内存泄漏的产生。

iview-树形控件的使用(一)

因为需要做一个权限管理,所以用到树形控件。

首先引入组件:

然后是data数据:

数据就会在页面上以树形结构的形式渲染出来:

左边是权限选项,右边是所选权限,如何达到这样的效果和只获取用户所选的权限。

树形控件里提供了三个事件和三个方法,这里用到的是事件是@on-select-change,点击树节点时触发,返回值是当前选中的节点数组,当前项,用到的方法是getCheckedAndIndeterminateNodes(),用于获取选中及半选节点。ref="tree',这个属性一定要写,之后要获取的数据通过$refs.tree.data可获取。

首先是如何在右边显示用户选择的权限,要有层级关系,半选的选中的都要显示。

将用户选择的权限有层级关系的展示出来后,现在要做的是获取用户选择的权限,只需要全选的即可。这里用到的是iview提供的getCheckedAndIndeterminateNodes()方法。this.power里存放的就是用户选择的权限,然后通过按钮保存按钮提交到后台即可

iView爬坑记——表单验证

版本:iView 2.7.4

自从项目用了iView之后,感觉做新需求的一半时间都在疯狂踩坑,所以写个文档记录一下踩过的坑。

此篇为iView表单验证的爬坑记录。

更新:2019.3.10

在项目开发中,表单验证时一直出现各种“不能为空”、验证不通过等情况,但是自身输入和验证方法没有问题时,一般来说是输入框的value为 undefined的。

比较简单的检测方法就是写一个验证方法,打印或 debugger查看此时的输入值的取值( value)是否为输入值,如果不是或为 undefined,那么就是取值错误,而非验证方法错误。

参考文档例子:

解决方法:

虽然我们在官网上会看到类似例子:

但是建议放弃利用这个方法验证输入值的数据类型。

例如,该验证方法的 type类型有 number,但它默认获取输入值为 string,所以会导致 type不符(并非因为输入的值不是数字)。

现在用的版本中还未修复此问题,如果已修复则可忽视该建议

在平时项目中,会遇到需要选择日期,但提交时日期不能为空这一需求,那么应该如何验证?

根据上面第一条打印 value值,发现如果日期没有选择,日期选择器上的 value值为 ["",""](使用的是<DatePicker type="date"></DatePicker>)。

解决方法:

这时候就不能根据长度验证,所以必须循环/遍历判断 value的数组每一项是否为空。

之前表单验证时遇到一个问题,在不同电脑上, TimePicker的最终数据值类型不同(不知道是否因为一个是Mac一个是Windows10)。

搜索了一下度娘,发现也有其他人有类似问题。

问题为:

Mac上 TimePicker最终数据类型为数组,而Win10上 TimePicker最终数据类型为本地时区时间(例如:2017-11-16T05:23:20.000Z)。

解决方法:

表单提交前记得判断 TimePicker最终数据的类型,避免传值给后端时报错。

表单验证规则中, trigger属性填写的是在什么情况下触发该验证,例如 blur或者 change。

但是我们会有某些需求,需要让该输入框在提交的时候才验证,并不需要实时验证,此时就会有把 trigger删掉的做法。

该做法的结果是,一进入有表单的页面时,表单就会进行一次校验。

有时候在项目中会有几个表单的输入框使用同一个校验方法(比如校验数字、身份证之类的),需要根据页面情况显示特定的错误信息提示,但是这个校验方法又是单独一个JS文件。

那么可以在校验规则上添加 message,写上特定的错误信息提示,这样页面上显示的就是特定的错误信息提示。

在规则中有未填或填错,会有正常提示,但是如果全部填写,步骤1却没办法判断成功并进入方法,会直接报错,有可能是写自定义规则的时候,没有写 callback()。

感谢您的阅读!希望本文对解决您关于iview的问题有所帮助。如果您还有其他疑问,欢迎随时向我们提问。

repeat-y?CSS里的 no-repeat 是什么意思条件函数,多个条件的函数公式