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 相关文章推荐
Some tips of wmi scripting in jscript (1)
Apr 03 Javascript
javascript实现的网页局布刷新效果
Dec 01 Javascript
window.showModalDialog()返回值的学习心得总结
Jan 07 Javascript
深入探究使JavaScript动画流畅的一些方法
Jun 30 Javascript
JavaScript的jQuery库插件的简要开发指南
Aug 12 Javascript
jQuery简单实现两级下拉菜单效果代码
Sep 15 Javascript
浅谈angular懒加载的一些坑
Aug 20 Javascript
Vue.js每天必学之Class与样式绑定
Sep 05 Javascript
js获取指定时间的前几秒
Apr 05 Javascript
js中事件对象和事件委托的介绍
Jan 21 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
May 23 Javascript
JQuery中的常用事件、对象属性与使用方法分析
Dec 23 jQuery
在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制作简单的内容采集器的原理分析
2008/10/01 PHP
PHP 上传文件大小限制
2009/07/05 PHP
PHP无敌近乎加密方式!
2010/07/17 PHP
PDO的安全处理与事物处理方法
2016/10/31 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
详解webpack性能优化——DLL
2017/10/20 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
2019/12/16 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
解决vue-router 嵌套路由没反应的问题
2020/09/22 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
python实现用于测试网站访问速率的方法
2015/05/26 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
Python二维码生成识别实例详解
2019/07/16 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
python 判断三个数字中的最大值实例代码
2019/07/24 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
如何基于windows实现python定时爬虫
2020/05/01 Python
python dict乱码如何解决
2020/06/07 Python
Pycharm在指定目录下生成文件和删除文件的实现
2020/12/28 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
中专毕业生自荐信
2013/11/16 职场文书
主治医师岗位职责
2013/12/10 职场文书
《苏珊的帽子》教学反思
2014/04/07 职场文书
儿子满月酒致辞
2015/07/29 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/04/22 无线电
MySQL kill不掉线程的原因
2021/05/07 MySQL