iview select选中值取值_iView的Select选择框

目录

在此先列出解决了那些问题,以防读者看完了没有用处:

1、示例,最基础的使用方法

2、传参,传多个值的方式

3、默认值

4、清空重置无效

5、可搜索的用法及如何限制搜索字符长度

一、示例

html:

{{item.name}}

js:

data: {

formSend: {

name: '',

code: ''

},

dataList: [{

id: 1,

name: '中国',

code: 'china'

}]

},

methods: {

getItemValue(val) {

// 当下拉框的值改变后,这里可以通过改变的值向后台发送请求获取其他数据。

// 可以通过函数默认的返回值 val 获取到下拉框选中的值

// 也可以通过select绑定的值 this.formSend.code 获取到下拉框选中的值

},

}

二、传参:获取多个与选项相关的值

1、同时获取option绑定值和显示值

一个下拉框,下拉列表里面option显示一个值,绑定一个值,select上面绑定的值是选中的option绑定的值,一般情况向后台发送select绑定的值就可以了,但是现在要求把选中的option显示的那个值也同时发送给后台。

解决方法

通过on-change方法来获取选中的列表项的文本,默认情况下,这个方法返回的是选中的绑定值,但iview提供了一个label-in-value属性,可以让显示的label和绑定的value值同时返回。返回的是一个对象,通过属性来获取想要的值。

html:

{{item.name}}

js:

data: {

formSend: {

name: '',

code: ''

},

dataList: [{

id: 1,

name: '中国',

code: 'china'

}]

},

methods: {

getItemName (val) {

this.formSend.name = val.label

// 这里直接获取显示的值就可以了,绑定的值可以通过select上面绑定的值取得

},

}

2、传参需要选中项的多个相关值

解决方式一

在option上添加点击事件,通过点击事件传参来获取更多值。

注意在点击事件上加修饰符.native,否则事件不生效。

html:

{{item.name}}

js:

data: {

formSend: {

name: '',

code: '',

id: ''

},

dataList: [{

id: 1,

name: '中国',

code: 'china'

}]

},

methods: {

getMoreParams (obj) {

this.formSend.name = obj.name

this.formSend.id= obj.id

},

}

解决方式二

只向后台传递一个参数,但是这个参数包含了多个相关的值,是一个多值通过特殊符号(逗号,冒号等)拼接成的字符串,后台再以相应的顺序解析参数(与后台沟通)。

html:

{{item.name}}

js:

data: {

formSend: {

code: '',

id: ''

},

dataList: [{

id: 1,

name: '中国',

code: 'china'

}]

},

三、设置默认值

单一默认值

如果是固定的默认值,只需要在data中定义变量的时候设置即可,将select绑定的值设置为option的value值

{{item.name}}

data: {

formSend: {

code: 'China'

},

dataList: [{

id: 1,

name: '中国',

code: 'China'

}, {

id: 2,

name: '美国',

code: 'America'

}]

},

动态默认值

如果是动态的根据某个不确定的值来设置不同的默认值,就需要搞事情了。

需求

判断某个日期是不是今天

1、如果是今天,需要判断当前时间

如果当前时间小于14点,则将默认时间设置为14点

同时时间数组为当前时间后的整点开始到次日6点 (小于6点则从6点开始)

如果当前时间大于14点,则将默认时间设置为当前时间后的整点

同时时间数组为当前时间后的整点开始到次日6点

2、如果不是今天

将默认时间设置为14点

同时时间数组为从6点到次日6点

代码

{{ item.timeShow }}

data: {

arriveLateTime: '',

arriveLateTimeArr: [{timeSend: '1300', timeShow: '13:00'}]

},

methods: {

setTimeArr (val) {

// 今天

if (new Date().toLocaleDateString() == new Date(val).toLocaleDateString()) {

var nowHour = new Date().getHours()

if (nowHour < 6) {

nowHour = 6

}else {

nowHour++

}

this.arriveLateTimeArr = []

for( ; nowHour<24; nowHour++) {

this.arriveLateTimeArr.push({

timeSend: nowHour<10 ? '0'+nowHour+'00' : nowHour+'00',

timeShow: nowHour<10 ? '0'+nowHour+':00' : nowHour+':00',

})

}

this.arriveLateTimeArr.push(

{ timeSend: '2359', timeShow: '23:59' },

{ timeSend: '0100', timeShow: '次日01:00' },

{ timeSend: '0200', timeShow: '次日02:00' },

{ timeSend: '0300', timeShow: '次日03:00' },

{ timeSend: '0400', timeShow: '次日04:00' },

{ timeSend: '0500', timeShow: '次日05:00' },

{ timeSend: 'Y0600', timeShow: '次日06:00' }

)

// 非今天

}else {

this.arriveLateTimeArr = [

{ timeSend: '0600', timeShow: '06:00' },

// ...省略

{ timeSend: 'Y0600', timeShow: '次日06:00' }

]

}

},

setDefaultTime (val) {

// 今天

if (new Date().toLocaleDateString() == new Date(val).toLocaleDateString()) {

var nowTime = new Date().getHours()

if (nowTime < 14) {

this.arriveLateTime = '1400'

}else {

nowTime++

this.arriveLateTime = nowTime+'00'

}

// 非今天

}else {

this.arriveLateTime = '1400'

}

}

}

重点在这里:

最初的时候,我把设置默认值和设置option数组的逻辑写在了一起,在created生命周期中调用,设置默认值并没有起作用。

后来将设置默认值和设置option数组分开来写,在created生命周期中设置option数组,在mounted生命周期中设置默认值,此时设置默认值才生效。

created () {

this.setTimeArr('2018-10-20')

},

mounted () {

this.setDefaultTime('2018-10-20')

},

(后期补充:现在想来,也许用this.$nextTick应该也是可以的,只要赋值数组与赋值默认值不同时期即可,未尝试,此为后期补充文章时的想法)

四、设置清空重置无效

这种情况下通常是使用form表单的清空方法无效

{{item.name}}

方式一 select的清空重置方法

this.$refs.resetSelect.clearSingleSelect()

方式二 手动将select的查询条件赋值为空

this.$refs.resetSelect.query = ''

方式三 设置select的查询词

仅在可搜索的情况下可使用

this.$refs.resetSelect.setQuery('')

五、可搜索

前端搜索

普通用法

只需添加一个filterable属性即可,

{{item.name}}

设置搜索词最大长度

这里使用了搜索词改变的方法,当搜索词改变后判断它的长度,如果大于指定的长度就将它截取。重新赋值,赋值的方法两种都可以。

有个问题是,本来我以为selectDOM是个对象,但是有时候却为数组(在不同页面使用),并没有去深究原因,只是做了判断类型。

{{item.name}}

data: {

formSend: {

name: '',

code: ''

},

dataList: [{

id: 1,

name: '中国',

code: 'china'

}]

},

methods: {

queryChange (query) {

if (query.length > 50) {

let tempQuery = query.substring(0, 50);

this.$nextTick(() => {

// 数组

if (Array.isArray(this.$refs.querySelect)) {

// this.$refs.querySelect[0].query = tempQuery

this.$refs.querySelect[0].setQuery(tempQuery)

// 对象

}else if (typeof this.$refs.querySelect=== 'object') {

this.$refs.querySelect.query = tempQuery

// this.$refs.querySelect.setQuery(tempQuery)

}

})

}

},

}

后端搜索

用到了lodash做防抖,使用后端接口做远程搜索

import _ from 'lodash'

v-model="formUser.name"

filterable

label-in-value

remote

:remote-method="findUser"

:loading="userFinding"

@on-change="userSelect"

not-found-text=''>

{{item.name}}

data

formUser: {

name: '',

},

userFindArr: [], // 人员数组

userFinding: false, // 搜索用户

methods

// 搜索用户

findUser: _.debounce( function (val) {

this.userFinding = true;

setTimeout(() => {

this.userFinding = false;

const params = {

inputText: val

}

api.roleManage.roleFindSelect(params).then(res => {

if (res.status === 200) {

this.userFindArr = res.data || []

}

})

}, 200)

}, 500),

// 选择用户,当绑定的值为id,显示的值为name时。

// 当选择结果后,会出现短暂的显示id,然后显示name

// 解决:当改变后用选择的名字进行再次搜索,此时显示的就是名字

userSelect (obj) {

console.log('select', obj)

if (obj == null) {

return false

}

this.findUser(obj.label)

},

网站导航

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tibco_TIBCO产品的微服务和DevOps

tibco大家都在谈论微服务 &#xff0c;这些天。 您可以在数百篇文章和博客文章中读到很多有关微服务的信息。 马丁福勒 &#xff08; Martin Fowler &#xff09;的文章是一个很好的起点&#xff0c;该文章引发了有关这种新架构概念的大量讨论。 另一个不错的资源是独立于供应…

android 冰箱 活动,Android活动的使用

创建第一个应用&#xff1a;步骤一&#xff1a;1、Activity :一个页面2、Layout &#xff1a;页面布局3、Res&#xff1a;页面内的资源注意&#xff1a;所有的Activity都是继承与android.app.activity类&#xff0c;通过override实现。简单理解Activity 代表一个用户所能看到的…

C atoi函数

作用atoi()函数将数字格式的字符串转换为整数类型。例如&#xff0c;将字符串1253124127转换成数字1253124127。注意首要注意atoi函数可以转化如下这种字符串1fdafhdjfhkas关于参数的注意事项&#xff0c;atoi()函数的参数是要转换的字符串。该字符串的格式为[空格][符号][数字…

python lock_python多线程Lock和RLock的区别

python多线程Lock和RLock的区别1. 两种锁的不同1.1 定义为了确保对共享资源的访问&#xff0c;python提供了两种锁&#xff0c;一个是上一篇提到的Lock&#xff0c;还有一个就是RLock&#xff0c;他们的区别在于&#xff1a;Lock是可用的最低级别的同步指令&#xff0c;一个线程…

开式蓄冷罐与闭式蓄冷罐_一罐将其全部统治:Arquillian + Java 8

开式蓄冷罐与闭式蓄冷罐借助Java 8 &#xff0c;已实现了许多新的语言改进&#xff0c;以简化开发人员的生活。 在我看来&#xff0c; Java 8的最大优点之一是&#xff0c;在某些情况下&#xff0c;已开发的代码看起来比使用以前的方法更漂亮&#xff0c;我指的是Lambdas和Meth…

C 预处理指令

C 预处理指令C语言、C 语言的预处理器。用于在编译器处理程序之前预扫描源代码&#xff0c;完成头文件的包含, 宏扩展, 条件编译, 行控制&#xff08;line control&#xff09;等操作编译的四个阶段C语言标准规定&#xff0c;预处理是指前4个编译阶段&#xff08;phases of tra…

将html代码转换为dom,将HTML字符转换为DOM节点并动态添加到文档中

将HTML字符转换为DOM节点并动态添加到文档中将字符串动态转换为DOM节点&#xff0c;在开发中经常遇到&#xff0c;尤其在模板引擎中更是不可或缺的技术。字符串转换为DOM节点本身并不难&#xff0c;本篇文章主要涉及两个主题&#xff1a;1 字符串转换为HTML DOM节点的基本方法及…

python 的csr_python的高级数组之稀疏矩阵

稀疏矩阵的定义&#xff1a;具有少量非零项的矩阵(在矩阵中&#xff0c;若数值0的元素数目远多于非0元素的数目&#xff0c;并且非0元素分布没有规律时&#xff0c;)则称该矩阵为稀疏矩阵&#xff1b;相反&#xff0c;为稠密矩阵。非零元素的总数比上矩阵所有元素的总数为矩阵的…

通过Spring集成进行消息处理

Spring Integration提供了Spring框架的扩展&#xff0c;以支持著名的企业集成模式。 它在基于Spring的应用程序中启用轻量级消息传递&#xff0c;并支持与外部系统的集成。 Spring Integration的最重要目标之一是为构建可维护且可测试的企业集成解决方案提供一个简单的模型。 …

鸿蒙系统多会发布,华为官宣鸿蒙系统将发布,还将发布多款新品

华为今日官宣&#xff0c;6月2日20&#xff1a;00&#xff0c;将举行鸿蒙操作系统及华为全场景新品发布会。【1、鸿蒙OS2.0】本次发布会的重点将是推出华为今年的重点战略产品——鸿蒙系统。届时鸿蒙OS2.0正式版将陆续推送给手机用户。5月中旬时华为就先行推送了一波鸿蒙OS开发…

C语言结构体字节对齐

默认字节对齐C语言结构体字节对齐是老生常谈的问题了&#xff0c;也是高频面试题&#xff0c;现在我们来深入研究这个问题&#xff0c;彻底弄懂到底是怎么回事&#xff0c;给你一个结构体定义和平台机器位数就能手动计算出结构体占用字节数&#xff0c;现在我们不使用宏#pragma…

shell shocked伴奏版_Shell Shocked

【游戏简介】Shell Shocked是一款全新卡牌对战题材的策略类手机游戏。游戏有着丰富的卡牌种类&#xff0c;极具策略性的玩法。游戏中玩家可以将进行真人游戏对战&#xff0c;随机抽取卡牌对战。玩家必须采取适合的策略&#xff0c;才有可能赢取游戏。 游戏操作简单&#xff0c;…

meetup_使用RxNetty访问Meetup的流API

meetup本文将涉及多个主题&#xff1a;响应式编程&#xff0c;HTTP&#xff0c;解析JSON以及与社交API集成。 完全在一个用例中&#xff1a;我们将通过非夸张的RxNetty库实时加载和处理新的metup.com事件&#xff0c;结合Netty框架的强大功能和RxJava库的灵活性。 Meetup提供了…

html约束验证的例子,HTML5利用约束验证API来检查表单的输入数据的代码实例

HTML5对于表单有着极大程度的优化&#xff0c;无论是语义&#xff0c;小部件&#xff0c;还是数据格式的验证。我猜你肯定会以浏览器兼容作为借口不愿意使用这些“新功能”&#xff0c;但这绝不应该成为使你停滞不前的原因&#xff0c;况且还有像Modernizr和ployfill这样的工具…

C语言经典题(1)

输入某年某月某日&#xff0c;判断这一天是这一年的第几天&#xff1f;程序分析&#xff1a;以3月5日为例&#xff0c;应该先把前两个月的加起来&#xff0c;然后再加上5天即本年的第几天&#xff0c;特殊情况&#xff0c;闰年且输入月份大于3时需考虑多加一天#include int mai…

jpg图片使用pil的resize后_如何使用PIL调整图像大小并保持其纵横比?

是否有一种显而易见的方法可以解决这个问题&#xff1f; 我只是想制作缩略图。#1楼PIL已经可以选择裁剪图像img ImageOps.fit(img, size, Image.ANTIALIAS)#2楼我丑陋的例子。函数获取文件如&#xff1a;“pic [0-9a-z]。[extension]”&#xff0c;将它们调整为120x120&#x…

openshift_OpenShift上的Java EE工作流(技术提示#64)

openshift该网络研讨会展示了如何使用WildFly &#xff0c; JBoss Tools &#xff0c; Forge &#xff0c; Arquillian和OpenShift在OpenShift上创建Java EE工作流。 具体来说&#xff0c;它谈论&#xff1a; 如何使用JBoss Developer Studio轻松开发Java EE应用程序并将其直接…

C语言面试-指针和引用的使用场景?

先解决两个疑问◆ 指针和引用的不同之处是什么&#xff1f;◆ 何时用用指针&#xff1f;何时用引用&#xff1f;指针和引用的不同之处看如下代码&#xff1a;指针是用来表示内存地址的&#xff0c;而指针这个整数正是被指向的变量地址。而引用就是给变量重新起了一个名字&#…

排序算法html,排序算法总结.html

排序算法总结 | borens blog排序算法总结borens blog首页所有文章关于作者排序算法总结Apr 6, 2018| 技术人生| 阅读排序,顾名思义,将数据按照某种规则排列起来.这种规则可以是根据基本的数值大小排序,也可以是通过字符串长度比较来排序,又或者是优先根据两个字符串的第一个不…

win10商店下载位置_win10应用商店下载的东西在哪

win10应用商店下载的东西在哪&#xff1f;我们都知道&#xff0c;微软从win8开始&#xff0c;就推出了应用商店&#xff0c;到现在的win10&#xff0c;还是一样。现在的win10应用商店里的东西也越来越丰富了。但是有些win10新用户朋友们在win10应用商店下载了东西&#xff0c;准…