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 相关文章推荐
表头固定(利用jquery实现原理介绍)
Nov 08 Javascript
jquery基础教程之deferred对象使用方法
Jan 22 Javascript
基于jquery的simpleValidate简易验证插件
Jan 31 Javascript
jquery处理json对象
Nov 03 Javascript
Javascript定义类(class)的三种方法详解
Mar 13 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
Jun 03 Javascript
js HTML5 Canvas绘制转盘抽奖
Sep 13 Javascript
深入理解requireJS-实现一个简单的模块加载器
Jan 15 Javascript
vue-cli扩展多模块打包的示例代码
Apr 09 Javascript
React中如何引入Angular组件详解
Aug 09 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
May 30 Javascript
JS实现页面跳转与刷新的方法汇总
Aug 30 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
PHP 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
最新的php 文件上传模型,支持多文件上传
2009/08/13 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
PHPExcel读取Excel文件的实现代码
2011/12/06 PHP
浅析PHP Socket技术
2013/08/02 PHP
完美解决thinkphp验证码出错无法显示的方法
2014/12/09 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
慎用 somefunction.prototype 分析
2009/06/02 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
浅谈jQuery.easyui的datebox格式化时间
2015/06/25 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
通过js修改input、select默认字体颜色
2017/04/19 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
2017/07/11 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
EL表达式截取字符串的函数说明
2017/09/22 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
node.js爬取中关村的在线电瓶车信息
2018/11/13 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
2020/08/22 Python
删除pycharm鼠标右键快捷键打开项目的操作
2021/01/16 Python
本科生详细的自我评价
2013/09/19 职场文书
大学生优秀自荐信范文
2014/02/25 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
任命书标准格式
2015/03/02 职场文书
学生检讨书怎么写
2015/05/07 职场文书
道歉信范文
2015/05/12 职场文书
祝寿主持词
2015/07/02 职场文书
素质教育学习心得体会
2016/01/19 职场文书
LyScript实现绕过反调试保护的示例详解
2022/08/14 Python