{i" />

vue 下拉框自定义 以及点击空白空白处关闭下拉框 vue的自定义事件directive

您所在的位置:网站首页 vue设置下拉框为禁用 vue 下拉框自定义 以及点击空白空白处关闭下拉框 vue的自定义事件directive

vue 下拉框自定义 以及点击空白空白处关闭下拉框 vue的自定义事件directive

2024-01-25 15:44| 来源: 网络整理| 查看: 265

v-close放在点击不关闭下拉框的标签上

专业 搜索 1 2 3

与data同级

directives: { close: { inserted(el, binding, vnode) { window.addEventListener("click", (e) => { if (!el.contains(e.target)) { vnode.context.showOpt = false; } }); }, }, },

在这里插入图片描述 另一种方式: 是在聚焦textarea框的时候,高度变大,点击其他地方高度恢复(用了上边的不生效,也不知道为啥),用这种方法也是把这部分抽离出来当成一个组件用才生效(还没整明白问题 出在哪里)

import Emotion from "../components/Emotion/index.vue"; 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); console.log(111); }, unbind(el, binding) { console.log(1211); // 解除事件监听 document.removeEventListener("click", el.__vueClickOutside__); delete el.__vueClickOutside__; }, }; export default { name: "Reply", components: { Emotion, }, data() { return { heightchange: false, }; }, directives: { clickoutside }, methods: { handle() { console.log(111333); if (!this.content) { this.heightchange = false; } console.log(this.heightchange); }, handleEmotion(i) { this.content += i; }, textareafocus() { console.log(23); this.heightchange = true; }, }, };

在这里插入图片描述 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3