在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 相关文章推荐
cloudgamer出品ImageZoom 图片放大效果
Apr 01 Javascript
JS.getTextContent(element,preformatted)使用介绍
Sep 21 Javascript
各浏览器对document.getElementById等方法的实现差异解析
Dec 05 Javascript
AngularJS ng-controller 指令简单实例
Aug 01 Javascript
Vue监听数组变化源码解析
Mar 09 Javascript
Angular.js中上传指令ng-upload的基本使用教程
Jul 30 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
Apr 23 Javascript
微信小程序整合使用富文本编辑器的方法详解
Apr 25 Javascript
jsonp跨域获取百度联想词的方法分析
May 13 Javascript
webpack打包优化的几个方法总结
Feb 10 Javascript
react的hooks的用法详解
Oct 12 Javascript
Vue实现简单购物车功能
Dec 13 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
php实现获取文件mime类型的方法
2015/02/11 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
javascript getElementsByClassName函数
2010/04/01 Javascript
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
javascript使用canvas实现饼状图效果
2020/09/08 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
微信小程序 接入腾讯地图的两种写法
2021/01/12 Javascript
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
[04:45]DOTA2上海特级锦标赛主赛事第四日RECAP
2016/03/06 DOTA
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
Python如何实现MySQL实例初始化详解
2017/11/06 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
pycharm: 恢复(reset) 误删文件的方法
2018/10/22 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
2018/11/14 Python
Python完成哈夫曼树编码过程及原理详解
2019/07/29 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
2020/06/12 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
计算机专业毕业生自荐信
2013/12/31 职场文书
简历自我评价怎么写好呢?
2014/01/04 职场文书
学生生病请假条范文
2014/02/16 职场文书
优秀家长事迹材料
2014/05/17 职场文书
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers
利用Redis实现点赞功能的示例代码
2022/06/28 Redis
MySQL索引失效十种场景与优化方案
2023/05/08 MySQL