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 相关文章推荐
javascript form 验证函数 弹出对话框形式
Jun 23 Javascript
setTimeout和setInterval的区别你真的了解吗?
Mar 31 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
Oct 18 Javascript
jquery实现未经美化的简洁TAB菜单效果
Aug 28 Javascript
基于javascript实现动态显示当前系统时间
Jan 28 Javascript
纯JS代码实现一键分享功能
Apr 20 Javascript
jQuery 获取多选框的值及多选框中文的函数
May 16 Javascript
addeventlistener监听scroll跟touch(实例讲解)
Aug 04 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
Jan 25 Javascript
layui点击按钮添加可编辑的一行方法
Aug 15 Javascript
微信小程序实现无限滚动列表
May 29 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
Sep 09 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
基于Zend的Config机制的应用分析
2013/05/02 PHP
php解析html类库simple_html_dom(详细介绍)
2013/07/05 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
网站被黑的假象--ARP欺骗之页面中加入一段js
2007/05/16 Javascript
一些mootools的学习资源
2010/02/07 Javascript
jquery.validate提示错误信息位置方法
2016/01/22 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
JS 全屏和退出全屏详解及实例代码
2016/11/07 Javascript
浅谈javascript中的 “ &amp;&amp; ” 和 “ || ”
2017/02/02 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
Django+Vue跨域环境配置详解
2018/07/06 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
python 从远程服务器下载日志文件的程序
2013/02/10 Python
Python中的__SLOTS__属性使用示例
2015/02/18 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
2019/01/03 Python
python opencv捕获摄像头并显示内容的实现
2019/07/11 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
如何定义TensorFlow输入节点
2020/01/23 Python
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
采购人员的个人自我评价
2014/01/16 职场文书
大学新闻系自荐书
2014/05/31 职场文书
现场活动策划方案
2014/08/22 职场文书
学生意外伤害赔偿协议书
2014/09/17 职场文书
庆祝三八妇女节标语
2014/10/09 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书