最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue組件實現(xiàn)可搜索下拉框擴(kuò)展

 更新時間:2020年10月23日 10:57:46   作者:wl_  
這篇文章主要為大家詳細(xì)介紹了vue組件實現(xiàn)可搜索下拉框的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了vue組件實現(xiàn)可搜索下拉框的具體代碼,供大家參考,具體內(nèi)容如下

一、效果

二、代碼

dropdown-ext.vue

<template>
  <div class="vue-dropdown-ext" :class="themestyle" v-show-extend="show">
    <div class="search-module clearfix" v-show="itemlist.length">
      <input class="search-text" @keyup='search($event)' 
      :placeholder="placeholder" />
      <span class="glyphicon glyphicon-search search-icon"></span>
    </div>
    <ul class="list-module" v-show="length" :style="{maxHeight:maxH+'px'}">
      <li v-for ="(item,index) in datalist" @click="appClick(item,$event)" 
      :key="index" :title="item.name">
        <span v-if="addIcon" :class="iconClass"></span>
        :style="itemTextStyle">{{item.name}}</span>
        <span v-if="statusIconType == 'text' && hasStatus" 
        :class="item.statusClass">{{item.statusText}}</span>
         :class="item.statusClass"></span>
      </li>
    </ul>
    <div class="tip__nodata" v-show="!length&&itemlist.length">
    {{nodatatext}}
    </div>
  </div>
</template>

<script>
  export default {
    data(){
      return {
        datalist:[]
      }
    },
    props:{
      'show':{//用于外部控制組件的顯示/隱藏
        type:Boolean,
        default:true
      },
      'itemlist':Array,
      'placeholder':String,
      'nodatatext':String,
      'themestyle':{
        type:String,
        default:'default-theme'
      },
      'item-text-style':{
        type:Object,
        default:function(){
          return {
            width:'80%'
          }
        }
      },
      'add-icon':{
        type:Boolean,
        default:true
      },
      'icon-class':{
        type:String,
        default:''
      },
      'has-status':{
        type:Boolean,
        default:false
      },
      'status-icon-type':{
        type:String,
        default:'text'//text or icon
      },
      'max-h':{
        type:Number,
        default:$(window).height()-400
      }
    },
    watch:{
      itemlist:function(val){
        this.datalist = val.concat();
      }
    },
    directives:{
      'show-extend':function(el,binding,vnode){//bind和 update鉤子
        let value = binding.value,searchInput = null;
        if(value){
          el.style.display='block';
        }else{//隱藏后,恢復(fù)初始狀態(tài)
          el.style.display='none';
          searchInput = el.querySelector(".search-text");
          searchInput.value = '';
          //還原渲染數(shù)據(jù)
          vnode.context.datalist = vnode.context.itemlist;
        }
      }
    },
    methods:{
      appClick:function(data,event){
        this.$emit('item-click',data,event);
      },
      search:function(e){
        let vm = this,searchvalue = e.currentTarget.value;
        vm.datalist = vm.itemlist.filter(
        function(item,index,arr){
          return item.name.indexOf(searchvalue) != -1;
        });
      },
      statusIconClass:function(status){
        let statusClass = '';
        return statusClass;
      }
    },
    computed:{
      length:function(){
        return this.datalist.length;
      }
    }
  }
</script>

<style lang="scss" scoped>
  .text-overflow__style {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
  }
  .vue-dropdown-ext {

    .search-module { position: relative;
      .search-text { width: 100%;
        height: 30px;
        padding-right: 2em;
        padding-left:0.5em;
        box-shadow: none;
        border: 1px solid #ccc;
        background: #fff;
        &:focus { border-color: #2198f2;
        }
      }

      .search-icon {
        position: absolute;
        top: 24%;
        right: 0.5em;
        color: #aaa;
      }

    }

    .list-module {
      overflow: auto;
      li { position: relative;
        margin-top: 0.5em;
        padding: 0.5em;
        border: 1px solid #ccc;
        white-space: nowrap;

        &>span { display: inline-block;
          vertical-align: middle;
        }

      }
    }

    .tip__nodata {
      font-size: 12px;
      margin-top: 1em;
    }

    &.default-theme {
      .list-module li { &:hover { cursor: pointer;
          border-color: #00a0e9;
        }

        &.active {
          border-color: #00a0e9;
          color: #00a0e9;
        }
      }

    }
  }
</style>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue3選項式api如何監(jiān)控數(shù)組變化

    vue3選項式api如何監(jiān)控數(shù)組變化

    這篇文章主要介紹了vue3選項式api如何監(jiān)控數(shù)組變化問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 解決vue前端文件上傳報錯:上傳失敗,原因:413 Request Entity Too Large

    解決vue前端文件上傳報錯:上傳失敗,原因:413 Request Entity Too&

    這篇文章主要介紹了解決vue前端文件上傳報錯:上傳失敗,原因:413 Request Entity Too Large,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 解讀計算屬性和watch監(jiān)聽的區(qū)別及說明

    解讀計算屬性和watch監(jiān)聽的區(qū)別及說明

    計算屬性是基于它們的依賴進(jìn)行緩存的,只有在它的相關(guān)依賴發(fā)生改變時才會重新求值,而watch則是一個更為通用的監(jiān)聽器,它可以在數(shù)據(jù)變化時執(zhí)行異步操作或開銷較大的操作
    2025-01-01
  • vue-next-admin項目使用cdn加速詳細(xì)配置

    vue-next-admin項目使用cdn加速詳細(xì)配置

    這篇文章主要為大家介紹了vue-next-admin項目使用cdn加速的詳細(xì)配置,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Vue+Vux項目實踐完整代碼

    Vue+Vux項目實踐完整代碼

    本文給大家分享一段詳細(xì)的代碼給大家介紹Vue+Vux項目實踐思路,需要的朋友可以參考下
    2017-11-11
  • Vue輸入框?qū)崟r驗證IP地址合法性并在下方進(jìn)行提示功能實現(xiàn)

    Vue輸入框?qū)崟r驗證IP地址合法性并在下方進(jìn)行提示功能實現(xiàn)

    在Vue組件中的IP地址輸入框定義一個checkIpAddress方法,該方法使用正則表達(dá)式對傳入的IP地址進(jìn)行驗證,這篇文章主要介紹了Vue輸入框?qū)崟r驗證IP地址合法性并在下方進(jìn)行提示,需要的朋友可以參考下
    2024-06-06
  • 詳解vue-cli 腳手架 安裝

    詳解vue-cli 腳手架 安裝

    這篇文章主要介紹了vue-cli腳手架安裝,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 詳解Vue的mixin策略

    詳解Vue的mixin策略

    這篇文章主要介紹了Vue的mixin策略的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)vue框架,感興趣的朋友可以了解下
    2020-11-11
  • Vue 2源碼解析HTMLParserOptions.start函數(shù)方法

    Vue 2源碼解析HTMLParserOptions.start函數(shù)方法

    這篇文章主要為大家介紹了Vue 2源碼解析HTMLParserOptions.start函數(shù)方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Vue3如何在setup中獲取元素引用(ref)

    Vue3如何在setup中獲取元素引用(ref)

    這篇文章主要介紹了Vue3如何在setup中獲取元素引用(ref)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評論

府谷县| 商南县| 高邑县| 新津县| 美姑县| 宣武区| 安义县| 四平市| 汕尾市| 北京市| 西贡区| 张家港市| 勃利县| 黑龙江省| 罗甸县| 东丽区| 屏东县| 香港| 商洛市| 北京市| 尼勒克县| 西畴县| 平武县| 驻马店市| 农安县| 青海省| 都江堰市| 大悟县| 湖南省| 汝州市| 兴安盟| 开封县| 沁源县| 海原县| 绍兴市| 潜山县| 榕江县| 彩票| 诏安县| 台南市| 莲花县|