在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 相关文章推荐
!DOCTYPE声明对JavaScript的影响分析
Apr 12 Javascript
jQuery下通过replace字符串替换实现大小图片切换
May 22 Javascript
jquery弹出关闭遮罩层实例
Aug 06 Javascript
javascript alert乱码的解决方法
Nov 05 Javascript
js实现touch移动触屏滑动事件
Apr 17 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
Oct 15 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
Sep 14 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
Sep 17 Javascript
原生JS封装animate运动框架的实例
Oct 12 Javascript
详解javascript常用工具类的封装
Jan 30 Javascript
详解在React项目中安装并使用Less(用法总结)
Mar 18 Javascript
vue 实现移动端键盘搜索事件监听
Nov 06 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
vue实现简单加法计算器
Oct 22 #Javascript
You might like
PHP 进程锁定问题分析研究
2009/11/24 PHP
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
php遍历目录方法小结
2015/03/10 PHP
Smarty最简单实现列表奇偶变色的方法
2015/07/01 PHP
jQuery1.6 使用方法一
2011/11/23 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
删除select中所有option选项jquery代码
2013/08/12 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
很不错的两款Bootstrap Icon图标选择组件
2016/01/28 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
2016/05/21 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
javascript实现京东快递单号的查询效果
2020/11/30 Javascript
对Python+opencv将图片生成视频的实例详解
2019/01/08 Python
Python装饰器用法实例分析
2019/01/14 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
如何清空Session
2015/02/23 面试题
暑期实践思想汇报
2014/01/06 职场文书
小区停车场管理制度
2014/01/27 职场文书
工作迟到检讨书
2014/02/21 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
教师创先争优承诺书
2015/04/27 职场文书
主持人开场白台词
2015/05/29 职场文书
Oracle使用别名的好处
2022/04/19 Oracle