gpt4 book ai didi

javascript - VueJS - 触发子函数

转载 作者:数据小太阳 更新时间:2023-10-29 03:49:44 26 4
gpt4 key购买 nike

我刚开始使用 vuejs (2.0)。我正在尝试关闭此功能:

  • 点击一个按钮
  • 子组件中的触发函数
  • child 数据中的增量

这是我目前拥有的

HTML:

<div id="root">
<cart @addtocart="add()"></cart>
<button @click="$emit('addtocart')">Add to Cart</button>
</div>

JS:

Vue.component('cart', {
template: `<span>{{ items }}</span>`,
data() {
return {
items: 0
}
},
methods: {
add() {
alert('add');
}
}
});


new Vue({
el: '#root',
components: ['cart'],
});

如有任何帮助,我们将不胜感激。谢谢大家!

最佳答案

您可以使用集中式集线器向其发出事件(如文档 https://v2.vuejs.org/v2/guide/migration.html#dispatch-and-broadcast-replaced 中所建议),然后在您的子组件中监听这些事件并使用react。这是对执行此操作的代码的快速更新:

var eventHub = new Vue();

Vue.component('cart', {
template: `<span>{{ items }}</span>`,
data() {
return {
items: 0
}
},
created() {
eventHub.$on('add-item', this.add)
},
methods: {
add() {
alert('add');
this.items++;
}
}
});


new Vue({
el: '#root',
components: ['cart'],
methods: {
addToCart() {
eventHub.$emit('add-item')
}
}
});

我自己刚开始使用 vue,所以我可能是错的,但据我所知,让子组件依赖于特定的父组件是一个坏主意,因为它会强制子组件“耦合”到该父组件以正常运行并使其不便携。从子组件备份发出事件很好,因为这只是让任何收听的人知道发生了什么事情的组件。我想您可以通过使用 this.$parent.$on('add-item', this.method) 直接访问父级及其发出的事件,但这对我来说看起来很老套。也许如果您的根组件和子组件始终以这种方式紧密耦合,this.$parent 就可以了。上面的“实例化一个新的 vue 实例”示例可能只是另一种方法,无需将子组件绑定(bind)到父组件,因为 Vue 实例实现了事件系统(因此公开了 $emit、$on 方法)

关于javascript - VueJS - 触发子函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41860127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com