Avue版本:v2.7.10及以下适用本文,v2.8.0及以上版本点这里
文章目录
- 《 Avue 远程搜索输入框,联动赋值》
- 前言
- 一、基于avue自带属性实现(效果差)
- 二、基于element-ui实现(效果好)
- 总结
《 Avue 远程搜索输入框,联动赋值》 效果图:
![avue|Avue 远程搜索输入框,联动赋值其他组件 v2.7.10及以下](http://img.readke.com/220906/1430413161-0.gif)
文章图片
前言 在很多情况下需要联动赋值给输入框,本文基于avue框架分别从avue与element-ui两方面进行远程搜索输入框联动赋值给其他输入框。
- 需求
- 1、后台接受模糊查询参数,从 编码 字段的输入值进行后台模糊匹配并返回json数据。(接口已经实现,传值调用即可)
- 2、根据 编码 的选择,将数据行自带的值匹配到 描述1 、描述2中。
本文是基于对avue基本的表单结构熟悉后进行的操作,基础步骤不详的,可联系作者交流学习。
一、基于avue自带属性实现(效果差) 【avue|Avue 远程搜索输入框,联动赋值其他组件 v2.7.10及以下】示例:avue 是基于element-ui封装的一种工具,该工具是为了解决数据表单任务而创建的。
Option属性
export const tableOption = {
"border": true,
"index": true,
"indexLabel": "序号",
"stripe": true,
"menuAlign": "center",
"align": "center",
"searchMenuSpan": 6,
"searchslot": true,
"selection":true,
"column": [
{
"type": "select",
"label": "编码",
"prop": "Number",
"remote": true,//开启远程访问
"dicFlag":false,//初次获得焦点不下拉
"dicUrl": "/admin/version/vp?num={{key}}",//key为当前输入值
"props": {//下拉列表的选项值,对应编码
lable: 'Part',
value: 'Part',
},
"cascaderItem": ['desc1', 'desc2'],//联动两个属性
"search": true,//远程搜索
"span": 12,
}, {
"type": "input",
"label": "描述1",
"prop": "desc1",
"dicFlag":false,
"dicUrl": "/admin/version/vp?num={{Number}}",//联动时 获取productNumber的值
"props": {//描述1
lable: 'Desc1',
value: 'Desc1',
},
"cascaderIndex": 0,//默认联动
"span": 12,
}, {
"type": "input",
"label": "描述2",
"prop": "desc2",
"dicFlag":false,
"dicUrl": "/admin/craftversion/vp?num={{Number}}", //联动时 获取productNumber的值
"props": {//描述2
lable: 'Desc2',
value: 'Desc2',
},
"cascaderIndex": 0,
"span": 12,
}, {
"type": "input",
"label": "版本",
"prop": "Verion",
"span": 12
}
],
}
基于avue属性方法的效果如下:
![avue|Avue 远程搜索输入框,联动赋值其他组件 v2.7.10及以下](http://img.readke.com/220906/1430415952-1.gif)
文章图片
在联动描述1、描述2 输入框时,存在明显卡顿(GIF经过加速,卡顿可能不明显)
二、基于element-ui实现(效果好) Option属性
export const tableOption = {
"border": true,
"index": true,
"indexLabel": "序号",
"stripe": true,
"menuAlign": "center",
"align": "center",
"searchMenuSpan": 6,
"searchslot": true,
"selection":true,
"column": [
{
"type": "select",
"label":"编码",
"prop": "Number",
"formslot":true,//开启自定义插槽,引入element-ui
"search": true,//设置搜索项
"span": 12,
}, {
"type": "input",
"label": "描述1",
"prop": "desc1",
"span": 12,
}, {
"type": "input",
"label": "描述2",
"prop": "desc2",
"span": 12,
}, {
"type": "input",
"label": "版本",
"prop": "Verion",
"span": 12
}
],
}
index.vue中在 avue-crud 组件中添加自定义插槽
index.vue中的 methods对象中的方法
//远程搜索
querySearchAsync(queryString, cb) {
let res = []//定义数组,存储暂时的下拉数据
queryNum(queryString).then(response =>{//queryNum 为定义的路由方法
response.data.data.forEach(item=>{
res.push({
value:item.Part,
desc1:item.Desc1,
desc2:item.Desc2
})
})
cb(res)//数据返回,value为下拉可见项
}).catch(e =>{
this.$message.error("请检查网络")
})
},//选择下拉项时
handleSelect(item,row) {
//为描述1、描述2 联动赋值
row.desc1 = item.desc1,
row.desc2 = item.desc2
},
路由中添加的方法(接口后端已写好,前端只是调用,本文不讨论后端实现)
export function queryNum(num) {
return request({
url: '/admin/version/vp/',//后台监听的路径,模糊匹配返回
method: 'get',//get请求
params: {
"num":num//监听的属性值
}
})
}
element-ui 方法效果如下:
![avue|Avue 远程搜索输入框,联动赋值其他组件 v2.7.10及以下](http://img.readke.com/220906/143041A60-2.gif)
文章图片
在联动描述1、描述2 输入框时,几乎同步联动。
总结 1、element-ui方法效果最好,只发送一次请求,响应快;
2、avue属性方法每联动一次就需要发生一次请求,导致响应慢。
3、avue属性方法较简单,适合测试接口使用。
4、element-ui方法简单,适合实际开发使用,适合开发者了解其运行原理,提升开发思维。
5、如果你有疑问或者有更好的实现方法请留言,交流学习
推荐阅读
- spring|使用swagger遇到的问题-启动服务出现空指针异常(Unable to scan documentation context default)
- 前端|CMMB
- 一些好玩的事|是什么让我放弃了Microsoft Edge的原生界面
- 前端|前端面试(浏览器输入网址后发生了什么())
- 微信小程序(黑马)|【微信小程序】自定义组件(一)
- vue.js|Vue模块语法下(事件处理器&自定义组件&组件通信)
- 前端学习|前端基础学习——Vue-Cli脚手架介绍
- Vue|Vue语法模板(样式绑定,事件处理器,表单,自定义组件,组件通信)
- #|vue-vue2脚手架6-浏览器本地存储webStorage