在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 操作XML入门
Dec 25 Javascript
jquery操作select option 的代码小结
Jun 21 Javascript
VBS通过WMI监视注册表变动的代码
Oct 27 Javascript
javascript日期转换 时间戳转日期格式
Nov 05 Javascript
jquery validate poshytip 自定义样式
Nov 26 Javascript
如何通过javascript操作web控件的自定义属性
Nov 25 Javascript
不提示直接关闭网页窗口的JS示例代码
Dec 17 Javascript
js实现具有高亮显示效果的多级菜单代码
Sep 01 Javascript
实例讲解JavaScript中instanceof运算符的用法
Jun 08 Javascript
微信小程序录音与播放录音功能
Dec 25 Javascript
react-native android状态栏的实现
Jun 15 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
Jul 31 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 screw加密php源代码
2013/06/20 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
2020/04/13 PHP
PHP中isset、empty的用法与区别示例详解
2020/11/05 PHP
为Yahoo! UI Extensions Grid增加内置的可编辑器
2007/03/10 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
2018/01/26 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
python logging类库使用例子
2014/11/22 Python
python通过post提交数据的方法
2015/05/06 Python
Python实现一个服务器监听多个客户端请求
2018/04/12 Python
python 读取DICOM头文件的实例
2018/05/07 Python
详解python3中tkinter知识点
2018/06/21 Python
python中多个装饰器的执行顺序详解
2018/10/08 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
香港个人化生活购物网站:Ballyhoo Limited
2016/09/10 全球购物
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
银行员工辞职信范文
2014/01/20 职场文书
会议接待欢迎词范文
2015/01/26 职场文书
pandas DataFrame.shift()函数的具体使用
2021/05/24 Python