在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修改网页背景颜色通过css方法实现
Jun 06 Javascript
AngularJS入门教程之学习环境搭建
Dec 06 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
Jan 27 Javascript
jquery自适应布局的简单实例
May 28 Javascript
简洁实用的BootStrap jQuery手风琴插件
Aug 31 Javascript
jquery.tableSort.js表格排序插件使用方法详解
Aug 12 Javascript
jQuery实现鼠标跟随效果
Feb 20 Javascript
VUE axios上传图片到七牛的实例代码
Jul 28 Javascript
Vue中添加手机验证码组件功能操作方法
Dec 07 Javascript
JS实现简易留言板特效
Dec 23 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
Feb 16 Javascript
vue通过接口直接下载java生成好的Excel表格案例
Oct 26 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
1982年日本摄影师镜头下的中国孩子 那无忧无虑的童年
2020/03/12 杂记
PHP 图片文件上传实现代码
2010/12/29 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
2016/08/01 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
详解php实现页面静态化原理
2017/06/21 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
动态加载js的几种方法
2006/10/23 Javascript
json-lib出现There is a cycle in the hierarchy解决办法
2010/02/24 Javascript
ExtJs纵坐标值重复问题的解决方法
2014/02/27 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
2017/01/19 Javascript
Vue入门之数据绑定(小结)
2018/01/08 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
浅谈layui 表单元素的选中问题
2019/10/25 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
Python中的文件和目录操作实现代码
2011/03/13 Python
python抓取网页图片并放到指定文件夹
2014/04/24 Python
初步理解Python进程的信号通讯
2015/04/09 Python
名片管理系统python版
2018/01/11 Python
Python实现多线程的两种方式分析
2018/08/29 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
Django数据库操作之save与update的使用
2020/04/01 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
优秀会计求职信
2014/07/04 职场文书
个人授权委托书
2014/09/15 职场文书
科技活动周标语
2014/10/08 职场文书
乡镇务虚会发言材料
2014/10/20 职场文书
2015年上半年物业工作总结
2015/03/30 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android
室外天线与收音机天线杆接合方法
2022/04/05 无线电