elementUI自定義組件--單(多)選

主要是記錄淋袖,以備不時之需搅窿。
效果圖:


項目中截圖

不多說,直接上代碼廊镜。

<template>
    <ul>
        <li class="tempItem" v-for="(item,index) in tempList" :key="index"
            @click="tempItemClick(item,index)"
            :class="{'temp-active':checkArr.includes(item[options.id])}"
            :style="{'width':width}" >

            {{item[options.label]}}
            <div class="triangle">
                <span class="check"></span>
            </div>
        </li>
    </ul>
</template>

<script>
    export default {
        name: 'tempList',
        props: {
            //必傳牙肝,選項列表
            tempList: {
                type: Array,
                required: true,
                default () {
                    return []
                }
            },
            //默認寬度200px,支持百分比
            width: {
                type: String,
                default () {
                    return '200px'
                }
            },
            //是否支持多選嗤朴,默認false
            multiple: {
                type: Boolean,
                default () {
                    return false
                }
            },
            //選中項列表
            checkArr: {
                type: Array,
                default () {
                    return []
                }
            },
            //列表項鍵值對(默認顯示值-label配椭,后臺存值-id)
            options: {
                type: Object,
                default () {
                    return {
                        label: 'label',
                        id: 'id'
                    }
                }
            }
        },
        methods: {
            tempItemClick(item){
                let id = item[this.options.id];
                this.checkArr.includes(id) ? 
                this.checkArr.splice(this.checkArr.indexOf(id),1) :
                this.multiple ? this.checkArr.push(id) : this.$set(this.checkArr,0,(id));
            }
        }
    }
</script>

<style lang="scss" scoped>
    .temp-active{
        color: #2476c2 !important;
        border-color: #2476c2 !important;
        /* 三角形 */
        .triangle {
            position: absolute;
            right: 0;
            top: 0;
            width: 0;
            height: 0;
            border: 11px solid #2476c2;
            border-left: 11px solid transparent;
            border-bottom: 11px solid transparent;
        }
        /* 對號 */
        .check {
            position: relative;
            display: inline-block;
            width: 25px;
            height: 25px;
            border-radius: 25px;
        }
        .check::after {
            content: "";
            position: absolute;
            left: -16px;
            top: -8px;
            width: 40%;
            height: 22%;
            border: 2px solid #fff;
            border-radius: 1px;
            border-top: none;
            border-right: none;
            background: transparent;
            transform: rotate(-45deg);
        }
    }
    .tempItem{
        position: relative;
        display: inline-block;
        // width: 200px;
        height: 30px;
        line-height: 30px;
        font-size: 16px;
        color: #DADADA;
        text-indent: 1em;
        white-space: nowrap;
        text-overflow: ellipsis;
        overflow: hidden;
        word-break: break-all;
        border: 1px solid #DADADA;
        cursor: pointer;
        margin: 0 10px 10px 0;
    }
    
</style>

使用示例:

<TemplateSelect
   :options="{label:'name',id:'pkId'}"
   :tempList="formList"
   multiple
   width="20%"
   :checkArr="formData.formId"
 />
...
...
import TemplateSelect from "@/components/TemplateSelect";

checkArr最好傳入,可以直接在父組件拿值不需要子組件往上傳(vue子組件直接修改父組件屬性是會報錯的雹姊,數組不會股缸,而且也沒發(fā)現什么副作用,所以安啦)吱雏。
OK!dawanshougong敦姻!

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市歧杏,隨后出現的幾起案子替劈,更是在濱河造成了極大的恐慌,老刑警劉巖得滤,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陨献,死亡現場離奇詭異,居然都是意外死亡懂更,警方通過查閱死者的電腦和手機眨业,發(fā)現死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沮协,“玉大人龄捡,你說我怎么就攤上這事】对荩” “怎么了聘殖?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵晨雳,是天一觀的道長。 經常有香客問我奸腺,道長餐禁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任突照,我火速辦了婚禮帮非,結果婚禮上,老公的妹妹穿的比我還像新娘讹蘑。我一直安慰自己末盔,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布座慰。 她就那樣靜靜地躺著陨舱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪版仔。 梳的紋絲不亂的頭發(fā)上游盲,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音邦尊,去河邊找鬼背桐。 笑死优烧,一個胖子當著我的面吹牛蝉揍,可吹牛的內容都是我干的。 我是一名探鬼主播畦娄,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼又沾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了熙卡?” 一聲冷哼從身側響起杖刷,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎驳癌,沒想到半個月后滑燃,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡颓鲜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年表窘,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甜滨。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡乐严,死狀恐怖,靈堂內的尸體忽然破棺而出衣摩,到底是詐尸還是另有隱情昂验,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站既琴,受9級特大地震影響占婉,放射性物質發(fā)生泄漏。R本人自食惡果不足惜呛梆,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一锐涯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧填物,春花似錦纹腌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至击困,卻和暖如春涎劈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背阅茶。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工蛛枚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人脸哀。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓蹦浦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親撞蜂。 傳聞我的和親對象是個殘疾皇子盲镶,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345