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 dom 操作详解 js加强
Jul 13 Javascript
js 实现无干扰阴影效果 简单好用(附文件下载)
Dec 27 Javascript
Bookmarklet实现启动jQuery(模仿 云输入法)
Sep 15 Javascript
Jquery Ajax请求代码(2)
Jan 07 Javascript
js实现从数组里随机获取元素
Jan 12 Javascript
AngularJS中的模块详解
Jan 29 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
Oct 10 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
Dec 13 Javascript
jquery.validate.js 多个相同name的处理方式
Jul 10 jQuery
React Native之ListView实现九宫格效果的示例
Aug 02 Javascript
echarts统计x轴区间的数值实例代码详解
Jul 07 Javascript
Taro小程序自定义顶部导航栏功能的实现
Dec 17 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 八种基本的数据类型小结
2011/06/01 PHP
php实现网站文件批量压缩下载功能
2015/10/28 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
PHP编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
javascript克隆对象深度介绍
2012/11/20 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
使用原生js封装的ajax实例(兼容jsonp)
2017/10/12 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
Nuxt.js开启SSR渲染的教程详解
2018/11/30 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
2019/02/01 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
layer关闭弹出窗口触发表单提交问题的处理方法
2019/09/25 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
遍历python字典几种方法总结(推荐)
2016/09/11 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
django Serializer序列化使用方法详解
2018/10/16 Python
Django接收自定义http header过程详解
2019/08/23 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
Selenium python时间控件输入问题解决方案
2020/07/22 Python
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
Conforama瑞士:家具、厨房、电器、装饰
2020/09/06 全球购物
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
募捐倡议书怎么写
2014/05/14 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技
ubuntu下常用apt命令介绍
2022/06/05 Servers