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

基于Vue el-autocomplete 實(shí)現(xiàn)類(lèi)似百度搜索框功能

 更新時(shí)間:2019年10月25日 11:26:33   作者:xu_song  
本文通過(guò)代碼給大家介紹了Vue el-autocomplete 實(shí)現(xiàn)類(lèi)似百度搜索框功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

效果圖如下所示:

首先上代碼

<template>
  <div class="assets-search height-all">
    <div class="search-layout">
      <div class="search-title">讓數(shù)據(jù)觸手可及</div>
      <div class="search-input-layout">
        <!--<el-input class="search-input" placeholder="檢索數(shù)據(jù)"
             @keyup.enter.native="searchAssets($event)"
             v-model="searchContent">
          <el-button style="color: white"
                @click="searchAssets(searchContent)"
                slot="append">搜 索</el-button>
        </el-input>-->
        <el-autocomplete
          class="inline-input search-input"
          v-model="searchContent"
          ref="autocomplete"
          :fetch-suggestions="requestDoSuggest"
          placeholder="請(qǐng)輸入您需要檢索資源名稱(chēng)或者中文"
          @keyup.enter.native="searchAssets($event)"
          :trigger-on-focus="false"
          @select="handleSelect"
        >
          <el-button @click="searchAssets" slot="append">搜 索</el-button>
        </el-autocomplete>
        <div class="search-word-layout" v-show="searchWordList.length">
          <span class="search-word-title">熱門(mén)搜索:</span>
          <div class="search-word-list">
            <span class="search-word"
                v-for="(item, index) in searchWordList"
                @click="clickHotWord(item)"
                :key="index">{{item}}</span>
          </div>
        </div>
      </div>
      <el-button v-if="false" class="db-number-layout">{{`資產(chǎn)庫(kù):${ddNumber}`}}</el-button>
    </div>
  </div>
</template>
<script>
  import {mapActions } from 'vuex';
  export default {
    name: "search",
    created() {
      this.requestHotWord();
    },
    data() {
      return {
        searchContent:'',
        ddNumber:3445,
        searchWordList:[],
        hotWordSize:5,
      }
    },
    methods:{
      ...mapActions(['_AJAX']),
      /**
       * 點(diǎn)擊熱詞搜索
       */
      clickHotWord(item) {
        this.searchContent = item;
        this.searchAssets();
      },
      /**
       * 跳轉(zhuǎn)到搜索結(jié)果頁(yè)面
       */
      searchAssets(event) {
        if (event) {
          event.target.blur();
          this.$refs.autocomplete.close();
        }
        let viewRoute = this.$router.resolve({
          path: '/assets/searchResult',
          query: {
            searchContent: this.searchContent,
          }
        });
        window.open(viewRoute.href, '_blank');
      },
      /**
       * 自動(dòng)補(bǔ)全
       */
      requestDoSuggest(queryString, cb) {
        let params = {
          url: 'esSearch.doSuggest',
          data: {
            input: queryString,
            size:4,
          },
          method: 'GET'
        };
        this._AJAX(params)
          .then(res => {
            let list = res.result.map((item)=>{
              return {value:item}
            })
            cb(list);
          })
      },
      /**
       * 選擇聯(lián)想出來(lái)的數(shù)據(jù)
       */
      handleSelect(item) {
        this.searchContent = item.value;
        this.searchAssets();
      },
      /**
       * 請(qǐng)求熱詞列表
       */
      requestHotWord() {
        let params = {
          url: 'esSearch.queryHotWord',
          data: {
            size:this.hotWordSize,
          },
          method: 'GET'
        };
        this._AJAX(params)
          .then(res => {
            this.searchWordList = res.result;
          })
      }
    },
  }
</script>
<style lang="scss">
  .assets-search {
    display: flex;
    flex-direction: column;
    justify-content: center;
    background: #6ba9ec;
    .search-layout{
      text-align: center;
      .search-title{
        font-size: 50px;
        color: white;
        font-weight: bold;
        padding-bottom: 40px;
      }
      .search-input-layout{
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        .search-input{
          width: 50%;
        }
        .search-word-layout{
          text-align: left;
          width: 50%;
          padding: 15px;
          display: flex;
          flex-direction: row;
          align-items: center;
          .search-word-title{
            font-size: 15px;
            color: white;
          }
          .search-word-list{
            span:hover{
              color: #666666;
            }
          }
          .search-word{
            font-size: 15px;
            color: white;
            padding-right: 10px;
            cursor: pointer;
          }
        }
      }
      .db-number-layout{
        margin-top: 80px;
      }
    }
    .el-input-group--append .el-input__inner {
      border-radius: 0;
      height: 48px;
      line-height: 48px;
    }
    .el-input-group__append {
      background: $color-assist;
      border-color: $color-assist;
      border-radius: 0;
      color: white;
    }
  }
</style>

注意的細(xì)節(jié)

基礎(chǔ)使用

fetch-suggestions 這個(gè)方法是去請(qǐng)求包含關(guān)鍵字的搜索功能,這里注意返回結(jié)果里面的列表對(duì)象屬性里面要有一個(gè)value的屬性,這個(gè)才能顯示,聯(lián)想輸入內(nèi)容。

select 方法是選擇了一個(gè)聯(lián)想輸入的具體數(shù)據(jù)的點(diǎn)擊事件

注意事項(xiàng)

按enter鍵進(jìn)行搜索功能@keyup.enter.native="searchAssets(event)",有些人會(huì)好奇,這個(gè) event)",有些人會(huì)好奇,這個(gè)event)",有些人會(huì)好奇,這個(gè)event是一個(gè)什么東西,其實(shí)就是一個(gè)事件,代碼

if (event) {
   event.target.blur();
   this.$refs.autocomplete.close();
}

這個(gè)是為了處理點(diǎn)擊enter使input輸入框失去焦點(diǎn),還有一個(gè)作用就是,讓el-autocomplete 的聯(lián)想輸入框關(guān)閉。這個(gè)達(dá)到和百度搜索類(lèi)似的效果。

總結(jié)

以上所述是小編給大家介紹的基于Vue el-autocomplete 實(shí)現(xiàn)類(lèi)似百度搜索框功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • Vue開(kāi)發(fā)環(huán)境的搭建全過(guò)程

    Vue開(kāi)發(fā)環(huán)境的搭建全過(guò)程

    文章介紹了在網(wǎng)頁(yè)中使用Vue.js的四種方式:基本方式、腳手架方式(Vue2.0)、使用WebStorm集成環(huán)境創(chuàng)建vue-cli項(xiàng)目(Vue3.0)以及Vue項(xiàng)目的目錄結(jié)構(gòu),每種方式都有詳細(xì)的步驟和示例,幫助讀者快速上手Vue.js開(kāi)發(fā)
    2024-11-11
  • 淺析Vue中defineProps的解構(gòu)和不解構(gòu)

    淺析Vue中defineProps的解構(gòu)和不解構(gòu)

    defineProps?是?Vue?3?Composition?API?中用來(lái)聲明組件接收的?props?的方法,本文主要為大家介紹了defineProps的解構(gòu)和不解構(gòu),感興趣的可以了解下
    2025-02-02
  • Vue history模式刷新頁(yè)面404問(wèn)題及解決

    Vue history模式刷新頁(yè)面404問(wèn)題及解決

    文章介紹了Vue單頁(yè)應(yīng)用中出現(xiàn)404錯(cuò)誤的原因,以及如何通過(guò)配置Nginx和使用Vue Router的hash模式來(lái)解決這個(gè)問(wèn)題,同時(shí),文章還簡(jiǎn)要解釋了單頁(yè)應(yīng)用的概念及其優(yōu)點(diǎn)和缺點(diǎn),并討論了Router的實(shí)現(xiàn)方式
    2024-12-12
  • vue-router動(dòng)態(tài)路由實(shí)現(xiàn)前端權(quán)限管理方式

    vue-router動(dòng)態(tài)路由實(shí)現(xiàn)前端權(quán)限管理方式

    這篇文章主要介紹了vue-router動(dòng)態(tài)路由實(shí)現(xiàn)前端權(quán)限管理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 解決vue多個(gè)路由共用一個(gè)頁(yè)面的問(wèn)題

    解決vue多個(gè)路由共用一個(gè)頁(yè)面的問(wèn)題

    下面小編就為大家分享一篇解決vue多個(gè)路由共用一個(gè)頁(yè)面的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • vue項(xiàng)目打包優(yōu)化的方法實(shí)戰(zhàn)記錄

    vue項(xiàng)目打包優(yōu)化的方法實(shí)戰(zhàn)記錄

    最近入職了新公司,接手了一個(gè)新拆分出來(lái)的Vue項(xiàng)目,針對(duì)該項(xiàng)目做了個(gè)打包優(yōu)化,把經(jīng)驗(yàn)分享出來(lái),下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目打包優(yōu)化的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Vue的指令中實(shí)現(xiàn)傳遞更多參數(shù)

    Vue的指令中實(shí)現(xiàn)傳遞更多參數(shù)

    這篇文章主要介紹了Vue的指令中實(shí)現(xiàn)傳遞更多參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 詳解Vue-cli3 項(xiàng)目在安卓低版本系統(tǒng)和IE上白屏問(wèn)題解決

    詳解Vue-cli3 項(xiàng)目在安卓低版本系統(tǒng)和IE上白屏問(wèn)題解決

    這篇文章主要介紹了Vue-cli3 項(xiàng)目在安卓低版本系統(tǒng)和 IE 上白屏問(wèn)題解決,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-04-04
  • Vue axios 中提交表單數(shù)據(jù)(含上傳文件)

    Vue axios 中提交表單數(shù)據(jù)(含上傳文件)

    本篇文章主要介紹了Vue axios 中提交表單數(shù)據(jù)(含上傳文件),具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-07-07
  • vue?cli3配置image-webpack-loader方式

    vue?cli3配置image-webpack-loader方式

    這篇文章主要介紹了vue?cli3配置image-webpack-loader方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評(píng)論

文水县| 东乌珠穆沁旗| 公安县| 海伦市| 延津县| 松江区| 婺源县| 佛坪县| 华安县| 阳泉市| 重庆市| 泗洪县| 双峰县| 方城县| 涡阳县| 水城县| 台中县| 波密县| 依安县| 钟祥市| 庆安县| 漾濞| 高唐县| 扬州市| 迭部县| 南川市| 江华| 舞阳县| 田阳县| 民丰县| 阳原县| 彭泽县| 鹰潭市| 炉霍县| 确山县| 梁山县| 开封县| 庆城县| 班玛县| 哈尔滨市| 吴旗县|