ホームページ >ウェブフロントエンド >jsチュートリアル >vue は空白をクリックして div を非表示にして表示します

vue は空白をクリックして div を非表示にして表示します

php中世界最好的语言
php中世界最好的语言オリジナル
2018-04-27 16:24:104728ブラウズ

今回は、vue が空白部分をクリックして div の非表示と表示を操作するときと、vue が空白部分をクリックして div の非表示と表示を操作するときのメモをお届けします。以下は実際的なケースです。見てみましょう。 。

1. ドキュメントにクリックイベントリスナーを必ず追加します
2. クリックイベントが発生したときに、現在のオブジェクトがクリックされたかどうかを判断します
この考え方と手順を組み合わせて実装していきます。

vue コマンドの簡単な紹介

コマンド定義オブジェクトは、次のフック関数 (すべてオプション) を提供できます:

  1. bind: 1 回だけ呼び出され、最初にコマンドが要素にバインドされたときに呼び出されます。時間。ここではワンタイムの初期化設定を行うことができます。

  2. inserted: バインドされた要素が親ノードに挿入されるときに呼び出されます (親ノードのみが存在することが保証されますが、必ずしもドキュメントに挿入されるわけではありません)。

  3. update: コンポーネントの VNode が更新されるときに呼び出されますが、その子 VNode が更新される前に発生する場合もあります。ディレクティブの値は変更されている場合もあれば、変更されていない場合もあります。ただし、更新前後の値を比較することで、不要なテンプレートの更新を無視できます (詳細なフック関数パラメータは以下を参照)。

  4. componentUpdated: 命令が配置されているコンポーネントのすべての VNode とそのサブ VNode が更新された後に呼び出されます。

  5. unbind: 命令が要素からバインド解除されるときに呼び出され、一度だけ呼び出されます。

次に、フック 関数 のパラメーター (つまり、el、binding、vnode、oldVnode) を見てみましょう。

コードの実装

コマンドオブジェクトを作成し、分析をコードに組み込みます

<template>
 <p>
 <p class="show" v-show="show" v-clickoutside="handleClose">
  显示
 </p>
 </p>
</template>
<script>
const clickoutside = {
 // 初始化指令
  bind(el, binding, vnode) {
    function documentHandler(e) {
  // 这里判断点击的元素是否是本身,是本身,则返回
      if (el.contains(e.target)) {
        return false;
  }
  // 判断指令中是否绑定了函数
      if (binding.expression) {
  // 如果绑定了函数 则调用那个函数,此处binding.value就是handleClose方法
        binding.value(e);
      }
 }
 // 给当前元素绑定个私有变量,方便在unbind中可以解除事件监听
    el.vueClickOutside = documentHandler;
    document.addEventListener('click', documentHandler);
  },
  update() {},
  unbind(el, binding) {
 // 解除事件监听
    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>

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、他のセクションに注目してください。関連記事はPHP中国語サイトにあります!

推奨読書:

要素トラバーサルを実装する要素トラバーサルの詳細な説明

ログイン時の画像検証コード機能を実装するノード

以上がvue は空白をクリックして div を非表示にして表示しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。