vue.js 中冲突的事件处理程序
P粉615886660
P粉615886660 2023-09-11 11:59:07
0
1
492

我有一个包含两个按钮的页面。我想使用这两个按钮导航到不同的页面。

如果我只包含其中一个按钮,它就可以正常工作。如果我只包含一个作品(正如我将用调试语句显示的那样,如果第二个按钮存在,则不会触发第一个按钮的事件处理程序)。

我的猜测是,第二个按钮与第一个按钮在某种程度上发生冲突,但我不知道为什么以及如何修复它。

这些是一些代码片段:

后退按钮.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粉615886660
P粉615886660

全部回复(1)
P粉819533564

您的代码存在一些小问题,但以下代码运行良好(不确定这到底来自哪里)。

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>

或者至少,我无法使用提供的代码片段重现您的问题。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板