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 相关文章推荐
JavaScript ECMA-262-3 深入解析.第三章.this
Sep 28 Javascript
js处理表格对table进行修饰
May 26 Javascript
可编辑下拉框的2种实现方式
Jun 13 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
Sep 22 Javascript
js实现网页多级级联菜单代码
Aug 20 Javascript
js简单设置与使用cookie的方法
Jan 22 Javascript
Validform表单验证总结篇
Oct 31 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
Nov 16 Javascript
JS实现图片手风琴效果
Apr 17 Javascript
React通过redux-persist持久化数据存储的方法示例
Feb 14 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
Sep 10 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
Nov 07 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 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
php实现转换html格式为文本格式的方法
2016/05/16 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
PHP中时间加减函数strtotime用法分析
2017/04/26 PHP
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
2015/08/31 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
浅析jQuery操作select控件的取值和设值
2016/12/07 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
self.attachevent is not a function的解决方法
2017/04/04 Javascript
使用yeoman构建angular应用的方法
2017/08/14 Javascript
浅谈vue的踩坑路
2017/08/31 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
通过webpack引入第三方库的方法
2018/07/20 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
Python基础之函数基本用法与进阶详解
2020/01/02 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
小学生感恩演讲稿
2014/04/25 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
民间借贷纠纷起诉书
2015/08/03 职场文书
vue3中provide && inject的使用
2021/07/01 Vue.js
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers