vue2.0 点击其他区域关闭自定义div

其实我觉得这不是一个很大的问题,之前用jquery实现起来也挺简单的,但今天我有点忍不住了,想把vue项目中,自己弹出了一个小区域,点击这个区域以外的地方关闭这个弹出区域。我之前在网上看了,回答还是挺多的,但我挺想骂他们的,但骂他们还得注册登录那些技术网站,实在是不想费劲,我就把他们的回答贴出来几个吧。

1、

    

  有人做这个回答,暂且评价其为SB1号吧,我想只要用了vue超过1歌星期的都会知道,要调个点击事件,然后改变那个v-if变量值,互联网现在云存储是挺好的,但这种人经常在网上发一些无关紧要,甚至所答非所问的东西,简直不忍直视;

2、

  

 这就是SB2号吧,什么玩意

3、

   

   回答果然简短至极,你如果会或者做过,如果想回答就好好把你的思路写出来,你写个这东西,很多没有入门的怎么使用。

我简单写一下我的解决思路吧。

1、vue模块中的内容

    <template>

        <div class="hello"  v-on:click="hidePanel">

<div id="myPanel" v-if="panelShow"></div>

       </div>

   </template>

   第一步,我们在自己的vue模块中整体添加了一个hidePanel事件,准备整体区域进行点击,然后id为myPanel的div是我们要处理的那个小组件。

2、定义变量

    data () {

   return {

panelShow: true

}

    }

   一直到这一步很多人也都明白,就是平常的东西

3、第三步才是重点,其实大家都知道,要触发一个事件,然后这个事件还是点击事件,点击到我们这个id是 myPanel以外的地方才进行一些操作,也就是把panelShow赋值为false,这一步才是很多人想问的。你说那些回答的人就想不到这一点吗,就是不想说吗,说他们SB我觉得都一点问题都没有

   methods: {

hidePanel: function(event){

var sp = document.getElementById("myPanel");

if(sp){

if(!sp.contains(event.target)){            //这句是说如果我们点击到了id为myPanel以外的区域

this.panelShow = false;

}

}

}

   }

我们可能都发现过一个共同的问题,那就是你想去网上查东西的时候,总能发现一些人的回答,简直就是 不忍直视,所以我希望写出的东西更加有用,我们都应该鼓励自己做勇敢而又热情的人

Vue 2.0中,自定义组件是构建复杂和可重用用户界面的重要部分。通过自定义组件,可以将UI分解为独立的、可重用的部分,从而提高代码的可维护性和可读性。下面是一个简单的Vue 2.0自定义组件实例: ### 创建自定义组件 首先,创建一个新的Vue组件文件,例如`MyButton.vue`: ```vue <template> <button @click="handleClick" :class="buttonClass"> {{ buttonText }} </button> </template> <script> export default { name: 'MyButton', props: { buttonText: { type: String, required: true }, buttonClass: { type: String, default: 'default-button' } }, methods: { handleClick() { this.$emit('click'); } } } </script> <style scoped> .default-button { background-color: blue; color: white; padding: 10px 20px; border: none; cursor: pointer; } </style> ``` ### 使用自定义组件 在父组件中使用自定义组件`MyButton`,例如`App.vue`: ```vue <template> <div> <h1>Vue 2.0 自定义组件实例</h1> <MyButton :buttonText="buttonText" :buttonClass="buttonClass" @click="handleButtonClick" /> </div> </template> <script> import MyButton from './components/MyButton.vue'; export default { name: 'App', components: { MyButton }, data() { return { buttonText: '点击我', buttonClass: 'custom-button' }; }, methods: { handleButtonClick() { alert('按钮被点击了!'); } } } </script> <style> .custom-button { background-color: green; } </style> ``` ### 解释 1. **创建自定义组件**: - `MyButton.vue`是一个自定义组件,包含一个按钮。 - 通过`props`接收`buttonText`和`buttonClass`属性,分别设置按钮文本和样式类。 - `handleClick`方法通过`$emit`事件触发父组件点击事件。 2. **使用自定义组件**: - 在`App.vue`中引入并注册`MyButton`组件。 - 通过`props`传递`buttonText`和`buttonClass`给`MyButton`组件。 - 通过`@click`事件监听器绑定`handleButtonClick`方法。
评论 53
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

经海路大白狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值