Vue Component 通过另一个相同的 Component 控制 Component 实例变量
Vue Component control Component instance variable by another same Component
所以这里我有一个情况,实际上我正在菜单项上创建一个弹出窗口。 popup 是一个组件。所以我想要实现的是在调用组件本身的另一个实例时将变量 isOpen 更改为 false。比方说
如果单击菜单项 1,弹出组件将打开 (isOpen = true)
如果单击菜单项 2 弹出组件打开 ( isOpen = true )
所以这次有两个相同的组件在这里打开,如果第一个被点击,第二个组件应该会自动关闭。但我不知道如何更改 popup.vue(component) 变量 isOpen 是单击第二个弹出组件。
问题附在Sanbox Demo中看看。
Sandbox Link
主要问题是您的状态存储在弹出窗口中,而不是保存弹出窗口的组件中
例如:
<popup v-model='pop1' />
<popup v-model='pop2' />
watch(pop1, value => {
if (value) pop2 = false
})
话虽如此,您可以通过让弹出窗口发出打开事件来解决此问题。当父级收到此消息时,它可以关闭其他弹出窗口。
<popup ref='pop1' @open='$refs.pop2.close()' />
<popup ref='pop2' />
菜单很多,最好有一个currentMenu
属性自己设置。当新菜单打开时,您更新当前成员。
<popup ref='pop1' :value='current==="p1"' @open='current="p1"' />
<popup ref='pop2' :value='current==="p2"' @open='current="p2"' />
所以这里我有一个情况,实际上我正在菜单项上创建一个弹出窗口。 popup 是一个组件。所以我想要实现的是在调用组件本身的另一个实例时将变量 isOpen 更改为 false。比方说
如果单击菜单项 1,弹出组件将打开 (isOpen = true) 如果单击菜单项 2 弹出组件打开 ( isOpen = true )
所以这次有两个相同的组件在这里打开,如果第一个被点击,第二个组件应该会自动关闭。但我不知道如何更改 popup.vue(component) 变量 isOpen 是单击第二个弹出组件。
问题附在Sanbox Demo中看看。 Sandbox Link
主要问题是您的状态存储在弹出窗口中,而不是保存弹出窗口的组件中
例如:
<popup v-model='pop1' />
<popup v-model='pop2' />
watch(pop1, value => {
if (value) pop2 = false
})
话虽如此,您可以通过让弹出窗口发出打开事件来解决此问题。当父级收到此消息时,它可以关闭其他弹出窗口。
<popup ref='pop1' @open='$refs.pop2.close()' />
<popup ref='pop2' />
菜单很多,最好有一个currentMenu
属性自己设置。当新菜单打开时,您更新当前成员。
<popup ref='pop1' :value='current==="p1"' @open='current="p1"' />
<popup ref='pop2' :value='current==="p2"' @open='current="p2"' />