我有一个包含两个按钮的页面。我想使用这两个按钮导航到不同的页面。
如果我只包含其中一个按钮,它就可以正常工作。如果我只包含一个作品(正如我将用调试语句显示的那样,如果第二个按钮存在,则不会触发第一个按钮的事件处理程序)。
我的猜测是,第二个按钮与第一个按钮在某种程度上发生冲突,但我不知道为什么以及如何修复它。
这些是一些代码片段:
后退按钮.vue
<template> <div> <button @click.stop="navigate()"/> </div> </template> <script> export default { name: 'BackButton', methods: { navigate(){ console.log("B"); } } } </script>
完成按钮.vue
<template> <div :style="visible ? { 'display': 'inline-flex' } : { 'display': 'none' }"> <button @click.stop="navigate()"/> </div> </template> <script> export default { name: 'FinishButton', props : { visible: Boolean }, methods: { navigate(){ console.log("F"); } } } </script>
Page.vue
<template> <BackButton/> <FinishButton :visible=ready></FinishButton> </template> <script> import BackButton from "../components/BackButton.vue" import FinishButton from "../components/FinishButton.vue" export default { name: 'Page', components: { BackButton, FinishButton }, data() { return { ready: true } }, } </script>
如果页面上的ready
为假(因此完成按钮
不可见),则单击后退按钮
会打印“ B”。如果 ready
为 true,finishbutton
会打印“F”,但单击backbutton
不会产生任何输出。
非常感谢您的帮助。
P粉8195335642023-09-12 10:08:55
您的代码存在一些小问题,但以下代码运行良好(不确定这到底来自哪里)。
Page.vue
<template> <div> <BackButton></BackButton> <FinishButton :visible="ready"></FinishButton> </div> </template> <script> import BackButton from '../components/BackButton.vue' import FinishButton from '../components/FinishButton.vue' export default { name: 'Page', components: { BackButton, FinishButton, }, data() { return { ready: true, } }, } </script>
BackButton.vue
<template> <div> <button @click.stop="navigate">back</button> </div> </template> <script> export default { name: 'BackButton', methods: { navigate() { console.log('B') }, }, } </script>
FinishButton.vue
<template> <div :style="visible ? { display: 'inline-flex' } : { display: 'none' }"> <button @click.stop="navigate">finish</button> </div> </template> <script> export default { name: 'FinishButton', props: { visible: Boolean, }, methods: { navigate() { console.log('F') }, }, } </script>
或者至少,我无法使用提供的代码片段重现您的问题。