Vue select 绑定动态变量的实例讲解


Posted in Javascript onOctober 22, 2020

概述

根据后台的数据生成多个select,由于数据的数量不定,所以v-model绑定的变量名也不定。所以通过数据的id或者下标进行变量拼接。页面能够成功渲染,但是当进行下拉框的选值时,组件不刷新,选中的结果并没有展示

Code

<div v-for="(item, index) in tagAllDate" :key="index">
    <el-form-item :label="item.name">
     <el-select v-model="editData['line_' + index]" multiple placeholder="请选择" style="width: 100%;">
      <el-option v-for="(itemO, o) in item.sub_list" :key="o" :label="itemO.name" :value="itemO.tag_id"></el-option>
     </el-select>
    </el-form-item>
   </div>

editdata是声明的对象

editData:{},

由于我们需要进行变量的动态拼接,所以不能使用“对象.属性”这种语法,使用中括号[]可以方便我们进行属性名的动态拼接。因为属性名并不能提前知道,所以editData中不能提前声明变量。而这就是问题的关键所在。

问题

由于v-model绑定的值没有声明,所以组件渲染后,当进行下拉选择时,选项的值并没有显示在组件中。但是输出结果时,值已经被选中了。也就是说,能够选到值,但页面上组件无响应。

如果假定我们拼接的id为[1,2,3] ,所以变量名为line_1, line_2, line_3 。在editData中依次声明这些变量后,组件显示正常。

结论

el-select组件需要绑定明确的变量,如果变量没有提前声明,则组件选择时界面将会无响应。

解决方案

tagAll() {
    this.loading = true;
    tagAll().then(response => {
     if(response.ret == 0) {
      response.data.forEach( (item, index)=>{
        this.$set(this.editData, "line_" + index, [])
      });
      this.tagAllDate = response.data;
     } else {
      this.$message.error(response.res_info);
     }
     this.loading = false
    })
   },

按照官方说明,在初始化的时候,会生成属性的getter、setter。通过setter函数的调用,从而触发组件更新。而直接赋值,并没有setter函数的触发。

另一个问题,

editData是动态的,里面的 line_ 也是动态的,如何去获取这些信息呢

Vue select 绑定动态变量的实例讲解

对象是editDate。但是里面的line_0 是动态创建的,就是说,editDate里面有多少的数据不知道,可能是:line_0 line_1 line_2 然后这些每一个都是数组,现在要拿到这些所有的数组里面的数据。

做法

首先循环这个对象拿到所有的Key的值,就是 line_0 line_1 这些key

for(var a in this.editData){
 console.log(a);
}

拿到key之后便可以直接根据动态的key拿到数组循环拿相应的值

for(var a in this.editData){
     this.editData[a].forEach( (item, index) => {
      console.log(item)
     });
    }

补充知识:vue-element-admin使用常见问题

一、vue-element-admin添加快捷导航

Vue select 绑定动态变量的实例讲解

这个组件是基于vue-i18n因此,首先在项目中安装i18n

npm install --save vue-i18n

然后main.js中引入

import i18n from './lang' // Internationalization

然后注意src下边lang文件夹的引入。之后在layout文件夹中,添加组件:tags-view 就可以了。

二、去掉Mock使用真实数据。

main.js中找到,mock的引入直接注释掉,就好了。所有的接口请求都在 api 下边

以上这篇Vue select 绑定动态变量的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
特殊字符、常规符号及其代码对照表
Jun 26 Javascript
script标签的 charset 属性使用说明
Dec 04 Javascript
js自定义事件代码说明
Jan 31 Javascript
JavaScript 32位整型无符号操作示例
Dec 08 Javascript
浅谈JQ中mouseover和mouseenter的区别
Sep 13 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
Jun 15 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
Jun 18 Javascript
Echart折线图手柄触发事件示例详解
Dec 16 Javascript
Seajs源码详解分析
Apr 02 Javascript
JS实现鼠标按下拖拽效果
Jul 23 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
Feb 24 Javascript
vue使用localStorage持久性存储实现评论列表
Apr 14 Vue.js
在Vue中使用Select选择器拼接label的操作
Oct 22 #Javascript
JavaScript 中判断变量是否为数字的示例代码
Oct 22 #Javascript
关于vue属性使用和不使用冒号的区别说明
Oct 22 #Javascript
jquery实现抽奖功能
Oct 22 #jQuery
Vue实现简单的留言板
Oct 23 #Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
Oct 22 #Javascript
JavaScript实现简易计算器小功能
Oct 22 #Javascript
You might like
PHP树形结构tree类用法示例
2019/02/01 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
基于jquery的设置页面文本框 只能输入数字的实现代码
2011/04/19 Javascript
jquery随意添加移除html的实现代码
2011/06/21 Javascript
DOM 中的事件处理介绍
2012/01/18 Javascript
js切换div css注意的细节
2012/12/10 Javascript
js图片自动轮播代码分享(js图片轮播)
2014/05/06 Javascript
Javascript URI 解析介绍
2015/03/15 Javascript
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
关于 jQuery Easyui异步加载tree的问题解析
2016/12/06 Javascript
Bootstrap表格制作代码
2017/03/17 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
JS获取url参数,JS发送json格式的POST请求方法
2018/03/29 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
Python实现分割文件及合并文件的方法
2015/07/10 Python
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
python 编程之twisted详解及简单实例
2017/01/28 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
python写日志文件操作类与应用示例
2019/07/01 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
Pytorch的mean和std调查实例
2020/01/02 Python
Python递归调用实现数字累加的代码
2020/02/25 Python
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
美国批发供应商:Kole Imports
2019/04/10 全球购物
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
Linux的主要特性
2014/10/06 面试题
加入学生会演讲稿
2014/04/24 职场文书
学生违纪检讨书200字
2014/10/21 职场文书
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
2015年教研工作总结
2015/05/23 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python