需求:vue项目中,导航栏有个el-switch开关,默认开关关闭,打开开关,显示显示新窗口,点击新窗口关闭按钮,导航栏开关自动关闭
时间: 2023-09-26 09:15:08 浏览: 90
在vue中实现某一些路由页面隐藏导航栏的功能操作
实现这个需求可以分为两部分,第一部分是在导航栏中添加一个 el-switch 开关,第二部分是在开关打开的情况下,点击新窗口关闭按钮时关闭开关。
第一部分可以通过在导航栏中添加一个 el-switch 组件来实现。以下是一个简单的实现示例:
```html
<template>
<div>
<el-switch v-model="isOpen" active-color="#13ce66" inactive-color="#ff4949"></el-switch>
</div>
</template>
<script>
export default {
data() {
return {
isOpen: false
}
}
}
</script>
```
在上面的示例中,我们使用了 `v-model` 来绑定开关的状态,使用了 `active-color` 和 `inactive-color` 来设置开关打开和关闭时的颜色。
第二部分需要监听新窗口关闭事件,并在关闭时将开关状态设置为关闭。可以通过在新窗口打开按钮中添加一个 `onclick` 事件来实现。以下是一个简单的实现示例:
```html
<template>
<div>
<el-switch v-model="isOpen" active-color="#13ce66" inactive-color="#ff4949"></el-switch>
<a href="http://www.example.com" target="_blank" onclick="window.opener.postMessage('close', '*')">打开新窗口</a>
</div>
</template>
<script>
export default {
data() {
return {
isOpen: false
}
},
mounted() {
window.addEventListener("message", event => {
if (event.data === "close") {
this.isOpen = false;
}
});
}
}
</script>
```
在上面的示例中,我们在新窗口打开按钮中添加了一个 `onclick` 事件,该事件会向父窗口发送一个消息,告诉父窗口新窗口已经关闭。在父窗口中,我们监听了 `message` 事件,并在新窗口关闭消息到达时将开关状态设置为关闭。
阅读全文