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

詳解vue中點(diǎn)擊空白處隱藏div的實(shí)現(xiàn)(用指令實(shí)現(xiàn))

 更新時(shí)間:2018年04月19日 11:41:47   作者:jaxQin  
本篇文章主要介紹了詳解vue中點(diǎn)擊空白處隱藏div的實(shí)現(xiàn)(用指令實(shí)現(xiàn)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

簡(jiǎn)單想應(yīng)該怎么實(shí)現(xiàn)?

1、肯定是給document增加一個(gè)click事件監(jiān)聽
2、當(dāng)發(fā)生click事件的時(shí)候判斷是否點(diǎn)擊的當(dāng)前對(duì)象
結(jié)合著本思路和指令咱們來(lái)實(shí)現(xiàn)。

簡(jiǎn)單介紹vue指令

一個(gè)指令定義對(duì)象可以提供如下幾個(gè)鉤子函數(shù) (均為可選):

  1. bind:只調(diào)用一次,指令第一次綁定到元素時(shí)調(diào)用。在這里可以進(jìn)行一次性的初始化設(shè)置。
  2. inserted:被綁定元素插入父節(jié)點(diǎn)時(shí)調(diào)用 (僅保證父節(jié)點(diǎn)存在,但不一定已被插入文檔中)。
  3. update:所在組件的 VNode 更新時(shí)調(diào)用,但是可能發(fā)生在其子 VNode 更新之前。指令的值可能發(fā)生了改變,也可能沒有。但是你可以通過(guò)比較更新前后的值來(lái)忽略不必要的模板更新 (詳細(xì)的鉤子函數(shù)參數(shù)見下)。
  4. componentUpdated:指令所在組件的 VNode 及其子 VNode 全部更新后調(diào)用。
  5. unbind:只調(diào)用一次,指令與元素解綁時(shí)調(diào)用。

接下來(lái)我們來(lái)看一下鉤子函數(shù)的參數(shù) (即 el、binding、vnode 和 oldVnode)。

代碼實(shí)現(xiàn)

創(chuàng)建指令對(duì)象,分析放在代碼中

<template>
 <div>
 <div class="show" v-show="show" v-clickoutside="handleClose">
  顯示
 </div>
 </div>
</template>

<script>
const clickoutside = {
 // 初始化指令
  bind(el, binding, vnode) {
    function documentHandler(e) {
  // 這里判斷點(diǎn)擊的元素是否是本身,是本身,則返回
      if (el.contains(e.target)) {
        return false;
  }
  // 判斷指令中是否綁定了函數(shù)
      if (binding.expression) {
  // 如果綁定了函數(shù) 則調(diào)用那個(gè)函數(shù),此處binding.value就是handleClose方法
        binding.value(e);
      }
 }
 // 給當(dāng)前元素綁定個(gè)私有變量,方便在unbind中可以解除事件監(jiān)聽
    el.__vueClickOutside__ = documentHandler;
    document.addEventListener('click', documentHandler);
  },
  update() {},
  unbind(el, binding) {
 // 解除事件監(jiān)聽
    document.removeEventListener('click', el.__vueClickOutside__);
    delete el.__vueClickOutside__;
  },
};
export default {
  name: 'HelloWorld',
  data() {
    return {
      show: true,
    };
  },
  directives: {clickoutside},
  methods: {
    handleClose(e) {
      this.show = false;
    },
  },
};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.show {
  width: 100px;
  height: 100px;
  background-color: red;
}
</style>

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

相關(guān)文章

  • 詳解用vue.js和laravel實(shí)現(xiàn)微信支付

    詳解用vue.js和laravel實(shí)現(xiàn)微信支付

    本篇文章主要介紹了用vue.js和laravel實(shí)現(xiàn)微信支付,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • 深入理解Vue響應(yīng)式原理及其實(shí)現(xiàn)方式

    深入理解Vue響應(yīng)式原理及其實(shí)現(xiàn)方式

    Vue的響應(yīng)式原理是Vue最核心的特性之一,也是Vue能夠?yàn)殚_發(fā)者提供高效便捷的開發(fā)體驗(yàn)的重要原因之一,這篇文章主要介紹了響應(yīng)式的原理及其實(shí)現(xiàn)方式,需要詳細(xì)了解可以參考下文
    2023-05-05
  • 解決v-for中使用v-if或者v-bind:class失效的問(wèn)題

    解決v-for中使用v-if或者v-bind:class失效的問(wèn)題

    今天小編就為大家分享一篇解決v-for中使用v-if或者v-bind:class失效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • Vue基礎(chǔ)語(yǔ)法知識(shí)梳理上篇

    Vue基礎(chǔ)語(yǔ)法知識(shí)梳理上篇

    這篇文章主要介紹了Vue基礎(chǔ)語(yǔ)法知識(shí)梳理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-12-12
  • vue+iview如何實(shí)現(xiàn)拼音、首字母、漢字模糊搜索

    vue+iview如何實(shí)現(xiàn)拼音、首字母、漢字模糊搜索

    這篇文章主要介紹了vue+iview如何實(shí)現(xiàn)拼音、首字母、漢字模糊搜索,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 基于前端VUE+ElementUI實(shí)現(xiàn)table行上移或下移功能(支持跨頁(yè)移動(dòng))

    基于前端VUE+ElementUI實(shí)現(xiàn)table行上移或下移功能(支持跨頁(yè)移動(dòng))

    有時(shí)候需要前端實(shí)現(xiàn)上移和下移功能,下面這篇文章主要給大家介紹了關(guān)于如何基于前端VUE+ElementUI實(shí)現(xiàn)table行上移或下移(支持跨頁(yè)移動(dòng))的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • Vue項(xiàng)目中如何封裝axios(統(tǒng)一管理http請(qǐng)求)

    Vue項(xiàng)目中如何封裝axios(統(tǒng)一管理http請(qǐng)求)

    這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目中如何封裝axios(統(tǒng)一管理http請(qǐng)求)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • vue better-scroll插件使用詳解

    vue better-scroll插件使用詳解

    本篇文章主要介紹了vue better-scroll插件使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • 深入了解Vue3中偵聽器watcher的實(shí)現(xiàn)原理

    深入了解Vue3中偵聽器watcher的實(shí)現(xiàn)原理

    在平時(shí)的開發(fā)工作中,我們經(jīng)常使用偵聽器幫助我們?nèi)ビ^察某個(gè)數(shù)據(jù)的變化然后去執(zhí)行一段邏輯。在?Vue.js?2.x?中,你可以通過(guò)?watch?選項(xiàng)去初始化一個(gè)偵聽器,稱作?watcher。本文將詳細(xì)為大家介紹一下偵聽器的實(shí)現(xiàn)原理,需要的可以參考一下
    2022-04-04
  • element validate驗(yàn)證函數(shù)不執(zhí)行的原因分析

    element validate驗(yàn)證函數(shù)不執(zhí)行的原因分析

    這篇文章主要介紹了element validate驗(yàn)證函數(shù)不執(zhí)行的原因分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04

最新評(píng)論

凭祥市| 梅河口市| 政和县| 正阳县| 会泽县| 祁阳县| 丹棱县| 永平县| 安阳市| 隆化县| 独山县| 元江| 奉贤区| 托克逊县| 东阳市| 永仁县| 武川县| 凌海市| 万盛区| 新兴县| 崇信县| 中卫市| 富锦市| 大城县| 工布江达县| 南召县| 灌云县| 沙洋县| 晋城| 泗水县| 卓资县| 方山县| 瑞丽市| 明水县| 江陵县| 青海省| 垦利县| 察雅县| 乐亭县| 衡东县| 武鸣县|