视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
如何使用vue隐藏div
2020-11-27 19:40:02 责编:小采
文档
这次给大家带来如何使用vue隐藏div,使用vue隐藏div的注意事项有哪些,下面就是实战案例,一起来看一下。

简单想应该怎么实现?

1、肯定是给document增加一个click事件监听
2、当发生click事件的时候判断是否点击的当前对象
结合着本思路和指令咱们来实现。

简单介绍vue指令

一个指令定义对象可以提供如下几个钩子函数 (均为可选):

  1. bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。

  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>

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

如何操作Vue做出proxy代理

怎样使用vue多页面开发打包

下载本文
显示全文
专题