在Vue中使用Select选择器拼接label的操作


Posted in Javascript onOctober 22, 2020

我就废话不多说了,大家还是直接看代码吧~

<el-form-item label="货道商品" prop="productid">
          <el-select v-model="form.productid" filterable placeholder="请选择" @change="changeselect">
            <el-option v-for="item in myproducts"
                  :key="item.Id"
                  :label="`${item.Name}/${item.Brand}/${item.Type}/${item.Spec}`"
                  :value="item.Id">
            </el-option>
          </el-select>
        </el-form-item>

正常使用方法:

:label=“item.label”

多个字段拼接:

:label="${item.Name}/${item.Brand}/${item.Type}/${item.Spec}"

补充知识:element el-select 动态创建绑定属性,视图不更新之-连环填坑

项目需求是这样的:

1. 在 a组件通过操作页面,请求拿到需要的data,然后将数据存在vuex 中,数据结构为多层嵌套结构大概如下

ceshi:[
  {
   values:[
    {
     value:[
      {id:1,label:'哈哈1'},
      {id:2,label:'哈哈2'},
      {id:3,label:'哈哈3'}
     ]
    },
    {
     value:[
      {id:4,label:'哈哈4'},
      {id:5,label:'哈哈5'},
      {id:6,label:'哈哈6'}
     ]
    }
   ]
  }
 ]

在组件中通过获取vuex中的数据ceshi为数据源,

computed: {
  ...mapGetters(['ceshi'])
 },

然后在b组件中动态渲染数据,因为我需要动态绑定属性所以我在computed中创建动态变量结构

//数据渲染
  <div v-for="(x1,index1) in ceshi" :key="index1+'1'">
   <div v-for="(x2,index2) in x1.values" :key="index2+'2'">
     <el-select placeholder="请选择" v-model="form[index1].values[index2].value"> //动态绑定属性
      <el-option
       v-for="item in x2.value"
       :key="item.id"
       :label="item.label"
       :value="item.id">
      </el-option>
     </el-select>
   </div>
  </div>
//  

computed: {
  ...mapGetters(['ceshi']),  
   form(){   
    return this.ceshi.map((val,index) => {
     let values = val.values.map((val,index) => {
      let json={value:""}
      return json
     })
     let ojson = {values};
     return ojson
    })
   }  
 }

发现数据绑定成功,选择框变化数据也会变化,但是页面不改变,视图没有更新,通过在select代码中加入$set方法,也并没有用,视图同样没有更新;查看文档发现发现computer默认没有双向绑定 ,默认为getter 需要自己写setter函数,但是我发现,因为我的动态数据是我通过vuex 中的数据得来的,我也并没有定义其他的data,所以无法使用setter,于是进行修改如下

data() {
  return {
   form:[]
 },
created () {
   this.ceshi.forEach((val,index) => {
    let values = val.values.map((val,index) => {
     let json={value:""}
     return json
    })
    let ojson = {values};
    this.form.push(ojson)
   })  
 }

结果报错,分析原因应该是,我并没有在a组件操作获取数据,但这个时候created函数运行于是报错了,修改逻辑为通过watch 监听ceshi 数据变化

ceshi: {
   handler(newValue,oldValue) {
    this.ceshi.forEach((val,index) => {
      let values = val.values.map((val,index) => {
       let json={value:""}
       return json
      })
      let ojson = {values};
      this.form.push(ojson)
     })
   },
   deep: true
  }

再看效果,发现解决了,记录如下,希望能帮助到您!

以上这篇在Vue中使用Select选择器拼接label的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
Jun 14 Javascript
编写针对IE的JS代码两种编写方法
Jan 30 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
Aug 01 Javascript
jQuery EasyUI datagrid实现本地分页的方法
Feb 13 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
Nov 08 jQuery
jQuery实现文件编码成base64并通过AJAX上传的方法
Apr 12 jQuery
vue实现条件判断动态绑定样式的方法
Sep 29 Javascript
Vue中的methods、watch、computed的区别
Nov 26 Javascript
记一次react前端项目打包优化的方法
Mar 30 Javascript
基于JavaScript实现十五拼图代码实例
Apr 26 Javascript
详解elementUI中input框无法输入的问题
Apr 27 Javascript
Vue组件生命周期运行原理解析
Nov 25 Vue.js
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
vue实现简单加法计算器
Oct 22 #Javascript
You might like
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
PHP 中的一些经验积累
2006/10/09 PHP
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
Zend Framework动作助手Json用法实例分析
2016/03/05 PHP
javascript获取当前ip的代码
2009/05/10 Javascript
10款非常有用的 Ajax 插件分享
2012/03/14 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
JavaScript中实现依赖注入的思路分享
2015/01/15 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
canvas学习之API整理笔记(一)
2016/12/29 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
js Element Traversal规范中的元素遍历方法
2018/04/19 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
python基础教程之五种数据类型详解
2017/01/12 Python
python中virtualenvwrapper安装与使用
2018/05/20 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
使用python实现ftp的文件读写方法
2019/07/02 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
2019/09/24 Python
django为Form生成的label标签添加class方式
2020/05/20 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
HearthSong官网:儿童户外玩具、儿童益智玩具
2017/10/16 全球购物
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
办公室文秘自我评价
2013/09/21 职场文书
项目经理任命书
2014/06/04 职场文书
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
创业计划书之干洗店
2019/09/10 职场文书
教你用eclipse连接mysql数据库
2021/04/22 MySQL
javascript Number 与 Math对象的介绍
2021/11/17 Javascript
table不让td文字溢出操作方法
2022/12/24 HTML / CSS