电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

vue根據條件不同顯示不同按鈕的操作

瀏覽:127日期:2022-12-18 13:55:12

我就廢話不多說了,大家還是直接看代碼吧~

<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值

最后兩種方法具體使用看具體場景,若是連續的正整數,可以直接使用第二種方法,若是需要擴展性強的,直接使用最后一種。

如有更好的寫法,歡迎交流?。?/p>

以上這篇vue根據條件不同顯示不同按鈕的操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Vue
相關文章:
主站蜘蛛池模板: 暴风影音| 地埋式垃圾站厂家【佳星环保】小区压缩垃圾中转站转运站 | 净气型药品柜-试剂柜-无管道净气型通风柜-苏州毕恩思 | 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 智慧农业|农业物联网|现代农业物联网-托普云农物联网官方网站 | 清管器,管道清管器,聚氨酯发泡球,清管球 - 承德嘉拓设备 | 安徽净化工程设计_无尘净化车间工程_合肥净化实验室_安徽创世环境科技有限公司 | 高低温试验房-深圳高低温湿热箱-小型高低温冲击试验箱-爱佩试验设备 | 东莞办公家具厂家直销-美鑫【免费3D效果图】全国办公桌/会议桌定制 | 深圳展厅设计_企业展馆设计_展厅设计公司_数字展厅设计_深圳百艺堂 | 滑板场地施工_极限运动场地设计_滑板公园建造_盐城天人极限运动场地建设有限公司 | 首页-浙江橙树网络技术有限公司 石磨面粉机|石磨面粉机械|石磨面粉机组|石磨面粉成套设备-河南成立粮油机械有限公司 | 橡胶膜片,夹布膜片,橡胶隔膜密封,泵阀设备密封膜片-衡水汉丰橡塑科技公司网站 | 软瓷_柔性面砖_软瓷砖_柔性石材_MCM软瓷厂家_湖北博悦佳软瓷 | 上海皓越真空设备有限公司官网-真空炉-真空热压烧结炉-sps放电等离子烧结炉 | 气动|电动调节阀|球阀|蝶阀-自力式调节阀-上海渠工阀门管道工程有限公司 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | 十二星座查询(性格特点分析、星座运势解读) - 玄米星座网 | 污水提升器,污水提升泵,地下室排水,增压泵,雨水泵,智能供排水控制器-上海智流泵业有限公司 | 风化石头制砂机_方解石制砂机_瓷砖石子制砂机_华盛铭厂家 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 消泡剂-水处理消泡剂-涂料消泡剂-切削液消泡剂价格-东莞德丰消泡剂厂家 | CPSE安博会| 医院专用门厂家报价-医用病房门尺寸大全-抗菌木门品牌推荐 | 皮带机_移动皮带机_大倾角皮带机_皮带机厂家 - 新乡市国盛机械设备有限公司 | 污水处理设备,一体化泵站,一体化净水设备-「梦之洁环保设备厂家」 | 全自动面膜机_面膜折叠机价格_面膜灌装机定制_高速折棉机厂家-深圳市益豪科技有限公司 | 齿轮减速马达一体式_蜗轮蜗杆减速机配电机-德国BOSERL齿轮减速电动机生产厂家 | 对照品_中药对照品_标准品_对照药材_「格利普」高纯中药标准品厂家-成都格利普生物科技有限公司 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 三氯异氰尿酸-二氯-三氯-二氯异氰尿酸钠-优氯净-强氯精-消毒片-济南中北_优氯净厂家 | 一体化净水器_一体化净水设备_一体化水处理设备-江苏旭浩鑫环保科技有限公司 | 粉末冶金注射成型厂家|MIM厂家|粉末冶金齿轮|MIM零件-深圳市新泰兴精密科技 | 橡胶接头|可曲挠橡胶接头|橡胶软接头安装使用教程-上海松夏官方网站 | 集装箱标准养护室-集装箱移动式养护室-广州璟业试验仪器有限公司 | 广州展台特装搭建商|特装展位设计搭建|展会特装搭建|特装展台制作设计|展览特装公司 | 无压烧结银_有压烧结银_导电银胶_导电油墨_导电胶-善仁(浙江)新材料 | 扬尘在线监测系统_工地噪声扬尘检测仪_扬尘监测系统_贝塔射线扬尘监测设备「风途物联网科技」 | 高压负荷开关-苏州雷尔沃电器有限公司 | 石英陶瓷,石英坩埚,二氧化硅陶瓷-淄博百特高新材料有限公司 | 深圳VI设计-画册设计-LOGO设计-包装设计-品牌策划公司-[智睿画册设计公司] | 渗透仪-直剪仪-三轴仪|苏州昱创百科 |