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对数字的格式化使用说明
Jan 12 Javascript
基于jquery库的tab新形式使用
Nov 16 Javascript
js获取当前日期前七天的方法
Feb 28 Javascript
javascript封装的sqlite操作类实例
Jul 17 Javascript
JS实现三个层重叠点击互相切换的方法
Oct 06 Javascript
JavaScript操作HTML元素和样式的方法详解
Oct 21 Javascript
jQuery Select下拉框操作小结(推荐)
Jul 22 Javascript
理解 Node.js 事件驱动机制的原理
Aug 16 Javascript
Angular实现搜索框及价格上下限功能
Jan 19 Javascript
Vue性能优化的方法
Jul 30 Javascript
Vue使用v-viewer实现图片预览
Oct 21 Javascript
JavaScript Html实现移动端红包雨功能页面
Jan 10 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利用cookie实现自动登录的方法
2014/12/10 PHP
浅谈PHP中JSON数据操作
2015/07/01 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
PHP 闭包详解及实例代码
2016/09/28 PHP
PHP调用全国天气预报数据接口查询天气示例
2019/02/20 PHP
laravel5.6实现数值转换
2019/10/23 PHP
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
2018/09/14 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
javascrit中undefined和null的区别详解
2019/04/07 Javascript
ionic3双击返回退出应用的方法
2019/09/17 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
[01:15:12]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#4Newbee VS CDEC
2016/03/03 DOTA
浅谈python中的__init__、__new__和__call__方法
2017/07/18 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
Python连接Redis的基本配置方法
2018/09/13 Python
python 通过手机号识别出对应的微信性别(实例代码)
2019/12/22 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
浅谈盘点5种基于Python生成的个性化语音方法
2021/02/05 Python
波兰最大的度假胜地和城市公寓租赁运营商:Sun & Snow
2018/10/18 全球购物
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
香港零食网购:上仓胃子
2020/06/08 全球购物
高中生活自我鉴定
2014/01/18 职场文书
2014年办公室主任工作总结
2014/11/12 职场文书
党员自我评价范文2015
2015/03/03 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书
Nginx代理同域名前后端分离项目的完整步骤
2021/03/31 Servers