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 相关文章推荐
自己的js工具 Event封装
Aug 21 Javascript
javascript多种数据类型表格排序代码分析
Sep 11 Javascript
JavaScript中判断对象类型的几种方法总结
Nov 11 Javascript
JavaScript分秒倒计时器实现方法
Feb 02 Javascript
js实现图片从左往右渐变切换效果的方法
Feb 06 Javascript
javascript实现回到顶部特效
May 06 Javascript
基于jQuery实现仿QQ空间送礼物功能代码
May 24 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
Jun 17 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
Nov 21 Javascript
layui禁用侧边导航栏点击事件的解决方法
Sep 25 Javascript
vue项目打包后路由错误的解决方法
Apr 13 Vue.js
JS前端使用Canvas快速实现手势解锁特效
Sep 23 Javascript
在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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
在PHP里得到前天和昨天的日期的代码
2007/08/16 PHP
php microtime获取浮点的时间戳
2010/02/21 PHP
PHP错误和异长常处理总结
2014/03/06 PHP
Javascript实例教程(19) 使用HoTMetal(5)
2006/12/23 Javascript
网上应用的一个不错common.js脚本
2007/08/08 Javascript
javascript fullscreen全屏实现代码
2009/04/09 Javascript
js post方式传递提交的实现代码
2010/05/31 Javascript
jquery.qrcode在线生成二维码使用示例
2013/08/21 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
基于JavaScript实现回到页面顶部动画代码
2016/05/24 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
原生js实现无缝轮播图
2020/01/11 Javascript
[05:02][DOTA2]DOTA进化论 第一期
2013/09/27 DOTA
17个Python小技巧分享
2015/01/23 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
numpy返回array中元素的index方法
2018/06/27 Python
使用Python横向合并excel文件的实例
2018/12/11 Python
python使用正则筛选信用卡
2019/01/27 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
基于python实现查询ip地址来源
2020/06/02 Python
python2和python3哪个使用率高
2020/06/23 Python
如何使用Pytorch搭建模型
2020/10/26 Python
浅谈h5自定义audio(问题及解决)
2016/08/19 HTML / CSS
输入N,打印N*N矩阵
2012/02/20 面试题
中科创达面试题
2016/12/28 面试题
团日活动策划书
2014/02/01 职场文书
租房合同协议书
2014/04/09 职场文书
电子商务专业自荐信
2014/06/02 职场文书
药店促销活动总结
2014/07/10 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
幼儿园六一主持词
2015/06/30 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技