vue根据条件不同显示不同按钮的操作


Posted in Javascript onAugust 04, 2020

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

<template slot-scope="scope">
 <el-button v-if="scope.row.isDeleted === 0" @click="lowerShelf(scope.row.id)" size="mini" type="primary" plain>下架</el-button>
 <el-button v-else size="mini" type="primary" plain>已下架</el-button>
</template>

补充知识:vue 过滤器之根据不同的类型渲染不同的字段

本文旨在分享如何利用vue过滤器,实现简单、高效的对同一个字段不同的字段值,渲染出不同的内容。

实际场景中我们可能会遇到后端在传给我们的数据中,某一个字段为type,type的值有1、2、3、4、5、6等,

1-6分别对应的是,苹果、梨、葡萄、芒果、香蕉、百香果。如何通过写最少的代码就能实现将他们一一对应起来呢?下面将一一介绍:

<ul>
 <li v-for="(d,index) in value" :key="index">
 {{d.type| filterType}}
 </li>
 </ul>

首先最初级的做法就是:在拿到数据后我们可能会用if/else来判断,如下所示:

filters: {
 filterType: function(val) {
 // 1、苹果 2、梨 3、葡萄 4、芒果 5、香蕉 6、百香果
 if (val ==== 1) {
 return '苹果'
 } else if (val ==== 2) {
 return '梨'
 } else if (val ==== 3) {
 return '葡萄'
 } else if (val === 4) {
 return '芒果'
 } else if (val === 5) {
 return '香蕉'
 } else if (val === 6) {
 return '百香果'
 } else {
 return '未知类型'
 }
 }
 }

这种写法是可以实现需求的,但是随着type的值逐渐增多,else if 的代码块会越来越臃肿,这种写法带来的后果就是可读性越来越差,且写法也不优雅,如何优化这点呢?我们可以使用switch:

filters: {
 filterType: function(val) {
 // 1、苹果 2、梨 3、葡萄 4、芒果 5、香蕉 6、百香果
 switch (val) {
 case 1:
  return '苹果'
  break;
 case 2:
  return '梨'
  break;
 case 3:
  return '葡萄'
  break;
 case 4:
  return '芒果'
  break;
 case 5:
  return '香蕉'
  break;
 case 6:
  return '百香果'
  break;
 default:
  return '未知类型'
 }
 }
 }

这样写比if/else 的写法可读性提高了不少,但是代码量还是挺多的,一个小功能用了这么多代码,实在是不能忍受,那怎么减少代码量呢?请往下看。。

filters: {
 filterType: function(val) {
 // 1、苹果 2、梨 3、葡萄 4、芒果 5、香蕉 6、百香果
 var typeArr = ['苹果', '梨' , '葡萄', '芒果', '香蕉', '百香果'];
 return typeArr[val-1];
 }
}

我们可以把存在的类型值放在数组里面,通过传入的type作为数组的下表,即可取到对应的值。这里要特别要提示一下,若type的值是从1开始,那传入的val就要减一,数组的下标是从0开始。

可以看到,这样写我们的确是少写了很多代码,但是有个问题,上面的方法只适用于1-n这种有顺序的正整数类型,假如type为-1,1,2,3,23 这种无序的情况就不适用了,怎么解决呢?且看下面

filters: {
 filterType: function(val) {
 // -1、苹果 2、梨 6、葡萄 8、芒果 13、香蕉 156、百香果
 let typeArr = [{"-1": "苹果"},{"2": "梨"},{"6": "葡萄"},{"8": "芒果"},{"13": "香蕉"},{"156": "百香果"}];
 let result = originTypeArr.filter((item) => Object.keys(item)[0] == row.type);
 return result.length > 0 ? result[0][row.type] : '未知类型';
 }
}

上面这个写法将type值作为对象的键值,通过filtes和Object.keys拿到数组中所有的键值,判断传入的val 是否和遍历的key值相等,来取到对应的value值

最后两种方法具体使用看具体场景,若是连续的正整数,可以直接使用第二种方法,若是需要扩展性强的,直接使用最后一种。

如有更好的写法,欢迎交流!!

以上这篇vue根据条件不同显示不同按钮的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用jQuery实现的掷色子游戏动画效果
Mar 14 Javascript
在JS数组特定索引处指定位置插入元素
Jul 27 Javascript
jquery操作select元素和option的实例代码
Feb 03 Javascript
JavaScript函数柯里化详解
Apr 29 Javascript
Javascript农历与公历相互转换的简单实例
Oct 09 Javascript
js实现仿购物车加减效果
Mar 01 Javascript
jQuery插件zTree实现获取一级节点数据的方法
Mar 08 Javascript
web.js.字符串与正则表达式操作
May 13 Javascript
JS设置手机验证码60s等待实现代码
Jun 14 Javascript
浅谈webpack下的AOP式无侵入注入
Nov 12 Javascript
推荐一个基于Node.js的表单验证库
Feb 15 Javascript
JS根据json数组多个字段排序及json数组常用操作
Jun 06 Javascript
如何在Vue.JS中使用图标组件
Aug 04 #Javascript
如何构建 vue-ssr 项目的方法步骤
Aug 04 #Javascript
vue-quill-editor的使用及个性化定制操作
Aug 04 #Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
Aug 03 #Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
Aug 03 #Javascript
VUE使用axios调用后台API接口的方法
Aug 03 #Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
Aug 03 #Javascript
You might like
php array_intersect()函数使用代码
2009/01/14 PHP
基于PHPExcel的常用方法总结
2013/06/13 PHP
PHP同时连接多个mysql数据库示例代码
2014/03/17 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
PHP速成大法
2015/01/30 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
JavaScript 中的事件教程
2007/04/05 Javascript
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
js DOM 元素ID就是全局变量
2012/09/20 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
jquery选择器使用详解
2014/04/08 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
javascript中json对象json数组json字符串互转及取值方法
2017/04/19 Javascript
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
echarts设置图例颜色和地图底色的方法实例
2018/08/01 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
python使用Plotly绘图工具绘制散点图、线形图
2019/04/02 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
python用700行代码实现http客户端
2021/01/14 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
2021/02/02 Python
时尚孕妇装:Ingrid & Isabel
2019/05/08 全球购物
试述DBMS的主要功能
2016/11/13 面试题
大学理论知识学习自我鉴定
2014/04/28 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
现实表现材料范文
2014/12/23 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书