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中的new的使用方法与注意事项
May 16 Javascript
js电信网通双线自动选择技巧
Nov 18 Javascript
再谈javascript面向对象编程
Mar 18 Javascript
动态标签 悬停效果 延迟加载示例代码
Nov 21 Javascript
关于JavaScript命名空间的一些心得
Jun 07 Javascript
JS组件Bootstrap导航条使用方法详解
Apr 29 Javascript
javascript正则表达式模糊匹配IP地址功能示例
Jan 06 Javascript
原生js实现弹出层效果
Jan 20 Javascript
jQuery pagination分页示例详解
Oct 23 jQuery
node.js爬取中关村的在线电瓶车信息
Nov 13 Javascript
小程序自定义日历效果
Dec 29 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
Mar 06 jQuery
如何在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脚本的10个技巧(6)
2006/10/09 PHP
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
2017/07/03 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
2018/10/18 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
某人初学javascript的时候写的学习笔记
2010/12/30 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
2015/10/22 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
JS中静态页面实现微信分享功能
2017/02/06 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
2017/05/05 Javascript
详解tween.js 中文使用指南
2018/01/05 Javascript
JavaScript 有用的代码片段和 trick
2018/02/22 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
基于jquery ajax的多文件上传进度条过程解析
2019/09/11 jQuery
swiper实现异形轮播效果
2019/11/28 Javascript
Vue微信公众号网页分享的示例代码
2020/05/28 Javascript
Django中ORM表的创建和增删改查方法示例
2017/11/15 Python
python3.6使用pymysql连接Mysql数据库
2018/05/25 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
django云端留言板实例详解
2019/07/22 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
对python中return与yield的区别详解
2020/03/12 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
html5中canvas学习笔记2-判断浏览器是否支持canvas
2013/01/06 HTML / CSS
会计专业大学生求职信范文
2014/01/28 职场文书
职业生涯规划书前言
2014/04/15 职场文书
经营目标管理责任书
2014/07/25 职场文书
七年级作文之秋游
2019/10/21 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
python区块链实现简版工作量证明
2022/05/25 Python