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 相关文章推荐
经典的解除许多网站无法复制文字的绝招
Dec 31 Javascript
读jQuery之九 一些瑕疵说明
Jun 21 Javascript
AJAX跨域请求json数据的实现方法
Nov 11 Javascript
jquery中change()用法实例分析
Feb 06 Javascript
JavaScript中for循环的使用详解
Jun 03 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
Sep 10 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
Jul 25 Javascript
在Web项目中引入Jquery插件报错的完美解决方案(图解)
Sep 19 Javascript
js代码实现下拉菜单【推荐】
Dec 15 Javascript
JavaScript实现三级联动菜单实例代码
Jun 26 Javascript
Vue实战之vue登录验证的实现代码
Oct 31 Javascript
vue综合组件间的通信详解
Nov 06 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
用Socket发送电子邮件
2006/10/09 PHP
file_get_contents(&quot;php://input&quot;, &quot;r&quot;)实例介绍
2013/07/01 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
2015/12/11 PHP
php支付宝APP支付功能
2020/07/29 PHP
jQuery 常见开发使用技巧总结
2009/12/26 Javascript
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
javascript 数组去重复(在线去重工具)
2016/12/17 Javascript
Jquery Easyui表单组件Form使用详解(30)
2016/12/19 Javascript
jQuery插件扩展操作入门示例
2017/01/16 Javascript
利用js判断手机是否安装某个app的多种方案
2017/02/13 Javascript
js禁止表单重复提交
2017/08/29 Javascript
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
2017/09/02 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
详解JavaScript的this指向和绑定
2020/09/08 Javascript
Python中的groupby分组功能的实例代码
2018/07/11 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
在python中利用try..except来代替if..else的用法
2019/12/19 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
Python获取excel内容及相关操作代码实例
2020/08/10 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
马来西亚时装购物网站:ZALORA马来西亚
2017/03/14 全球购物
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
优秀党员转正的自我评价
2013/10/06 职场文书
优秀学生事迹材料
2014/02/08 职场文书
企业领导对照检查材料
2014/08/20 职场文书
乡镇干部个人对照检查材料思想汇报
2014/10/04 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
新学期主题班会
2015/08/17 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书