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分页效果示例
Oct 11 Javascript
用jquery.sortElements实现table排序
May 04 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
Jan 24 Javascript
Bootstrap学习笔记之css组件(3)
Jun 07 Javascript
JavaScript实现in-place思想的快速排序方法
Aug 07 Javascript
JS动态加载脚本并执行回调操作
Aug 24 Javascript
js学习笔记之事件处理模型
Oct 31 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
Mar 08 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
Jul 19 Javascript
详解如何从零开始搭建Express+Vue开发环境
Jul 17 Javascript
Vue将页面导出为图片或者PDF
Aug 17 Javascript
Vue解决echart在element的tab切换时显示不正确问题
Aug 03 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
网页上facebook分享功能具体实现
2014/01/26 PHP
php面象对象数据库操作类实例
2014/12/02 PHP
Yii隐藏URL中index.php的方法
2016/07/12 PHP
php安全配置记录和常见错误梳理(总结)
2017/03/28 PHP
PHP7.3.10编译安装教程
2019/10/08 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
基于jQuery的获取标签名的代码
2012/07/16 Javascript
jQuery输入城市查看地图使用介绍
2013/05/08 Javascript
js时间戳格式化成日期格式的多种方法
2013/11/11 Javascript
jquery自定义滚动条插件示例分享
2014/02/21 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
js类式继承与原型式继承详解
2016/04/07 Javascript
JS实现鼠标框选效果完整实例
2016/06/20 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
python改变日志(logging)存放位置的示例
2014/03/27 Python
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
Python标准库之Sys模块使用详解
2015/05/23 Python
深入理解python多进程编程
2016/06/12 Python
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
在python shell中运行python文件的实现
2019/12/21 Python
python 实现Requests发送带cookies的请求
2021/02/08 Python
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
小学教育毕业生自荐信
2013/11/18 职场文书
全陪导游欢迎词
2014/01/17 职场文书
新任教师自我鉴定
2014/02/24 职场文书
2019销售早会主持词
2019/06/27 职场文书