欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue.js實(shí)現(xiàn)在下拉列表區(qū)域外點(diǎn)擊即可關(guān)閉下拉列表的功能(自定義下拉列表)

 更新時(shí)間:2017年05月30日 11:47:53   作者:zhangchao19890805  
這篇文章主要介紹了Vue.js實(shí)現(xiàn)在下拉列表區(qū)域外點(diǎn)擊即可關(guān)閉下拉列表的功能(自定義下拉列表) ,需要的朋友可以參考下

在開發(fā)過程中,為了效果好看,往往需要自己開發(fā)一個(gè)下拉列表,而不是使用 HTML 自身的 select 下拉列表。然而當(dāng)編寫自定義下拉列表的時(shí)候,就會碰到一個(gè)問題:如果用戶在下拉列表的范圍外進(jìn)行鼠標(biāo)點(diǎn)擊的操作,如何關(guān)閉已經(jīng)打開的下拉列表?

解決思路如下:在 DOM 的根節(jié)點(diǎn)上添加一個(gè) click 事件,同時(shí)下拉列表內(nèi)阻止事件的默認(rèn)行為和冒泡。當(dāng)響應(yīng)這個(gè)點(diǎn)擊事件的時(shí)候,說明是在下拉列表范圍外的點(diǎn)擊(因?yàn)橄吕斜韮?nèi)阻止了事件的冒泡),就可以關(guān)閉已經(jīng)打開的下拉列表。

如果是純 JS 代碼,有人可能會使用 document.onclick 來添加根節(jié)點(diǎn)事件。不過,我現(xiàn)在使用 Vue.js,會選擇使用 Vue.js 的方式處理這個(gè)問題。

Vue.js 使用組件化的方式組織代碼,會有一個(gè)根組件,可以在這個(gè)根組件上加上 @click 事件,來響應(yīng)區(qū)域外的點(diǎn)擊事件。在一個(gè)完整的應(yīng)用中,可能有多種場景需要這種區(qū)域外點(diǎn)擊關(guān)閉的功能。除了最普通的表單里的下拉列表外,還可能是網(wǎng)站右上角的消息提示框,或者菜單。比較合適的做法是把點(diǎn)擊事件的具體處理邏輯放到各個(gè)組件中去。

那么如何讓各個(gè)子組件響應(yīng)根組件上的點(diǎn)擊事件呢?可以使用Vuex來做到這一點(diǎn)。在這里 Vuex 起到了組件之間互相傳遞信息的作用。

讀者可以在這個(gè)網(wǎng)址下載我編寫的 Demo 項(xiàng)目:

推薦讀者使用 yarn install 安裝所需的依賴。

下面說一下關(guān)鍵代碼:

程序入口 main.js:

import Vue from 'vue'
import App from './App.vue'
import VueRouter from 'vue-router'
import routes from './router'
import VueSuperagent from 'vue-superagent'
import Vuex from 'vuex'
import 'babel-polyfill';
import store from './vuex/store';
Vue.use(VueRouter);
Vue.use(VueSuperagent);
Vue.use(Vuex);
const router = new VueRouter({
 mode: 'history',
 routes
})
new Vue({
 el: '#app',
 router,
 store,
 render: h => h(App)
})

根節(jié)點(diǎn) App.vue,添加了點(diǎn)擊事件。

<template>
 <div @click="clickRoot">
  <router-view></router-view>
 </div>
</template>
<script>
  export default {
    methods:{
      clickRoot(event){
        this.$store.dispatch("clickRootNumAction", 1);
      }
    }
  }
</script>

以上所述是小編給大家介紹的Vue.js實(shí)現(xiàn)在下拉列表區(qū)域外點(diǎn)擊即可關(guān)閉下拉列表的功能(自定義下拉列表),希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時(shí)回復(fù)大家的!

相關(guān)文章

  • 使用wang-editor上傳圖片后端接收不到的問題解決

    使用wang-editor上傳圖片后端接收不到的問題解決

    這篇文章主要介紹了如何解決wang-editor 上傳圖片后端接收不到的問題,文中通過圖文結(jié)合給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • 在vue中獲取wangeditor的html和text的操作

    在vue中獲取wangeditor的html和text的操作

    這篇文章主要介紹了在vue中獲取wangeditor的html和text的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Vue?electron零基礎(chǔ)使用教程

    Vue?electron零基礎(chǔ)使用教程

    Electron也可以快速地將你的網(wǎng)站打包成一個(gè)原生應(yīng)用發(fā)布,下面這篇文章主要給大家介紹了關(guān)于Vue和React中快速使用Electron的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • Vue render深入開發(fā)講解

    Vue render深入開發(fā)講解

    這篇文章主要介紹了Vue render深入開發(fā)講解
    2018-04-04
  • Electron+vite+vuetify項(xiàng)目搭建的流程和方法

    Electron+vite+vuetify項(xiàng)目搭建的流程和方法

    最近想用Electron來進(jìn)行跨平臺的桌面應(yīng)用開發(fā),同時(shí)想用vuetify作為組件,于是想搭建一個(gè)這樣的開發(fā)環(huán)境,這里分享下Electron+vite+vuetify項(xiàng)目搭建的流程和方法,感興趣的朋友一起看看吧
    2024-06-06
  • Vue+Element UI實(shí)現(xiàn)下拉菜單的封裝

    Vue+Element UI實(shí)現(xiàn)下拉菜單的封裝

    這篇文章主要為大家詳細(xì)介紹了Vue+Element UI實(shí)現(xiàn)下拉菜單的封裝代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Vue項(xiàng)目優(yōu)化打包之前端必備加分項(xiàng)

    Vue項(xiàng)目優(yōu)化打包之前端必備加分項(xiàng)

    相信現(xiàn)在很多人都是用Vue做過了各種項(xiàng)目,但是項(xiàng)目代碼做完和上線并不代表這結(jié)束,還有上線以后的優(yōu)化也是很重要的一點(diǎn),這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目優(yōu)化打包的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • 用vite搭建vue3應(yīng)用的實(shí)現(xiàn)方法

    用vite搭建vue3應(yīng)用的實(shí)現(xiàn)方法

    這篇文章主要介紹了用vite搭建vue3應(yīng)用的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • vue使用keep-alive實(shí)現(xiàn)數(shù)據(jù)緩存不刷新

    vue使用keep-alive實(shí)現(xiàn)數(shù)據(jù)緩存不刷新

    這篇文章主要介紹了vue使用keep-alive實(shí)現(xiàn)數(shù)據(jù)緩存不刷新,這里整理了詳細(xì)的代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Vue+Vant實(shí)現(xiàn)下拉加載功能

    Vue+Vant實(shí)現(xiàn)下拉加載功能

    為了像微信一樣方便地加載更多歷史消息,這篇文章將為大家介紹我們?nèi)绾问褂胿ant組件來實(shí)現(xiàn)下拉加載功能,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-06-06

最新評論