Javascript 尝试从总线vuejs发出结果
我正在尝试发出引号的结果数,我在其中加上一个引号,并将文本结果从textarea推送到数组中。字符串文本已成功推送到数组,但引号数始终为零。我曾经用一种方法或分离方法尝试过,结果总是一样的Javascript 尝试从总线vuejs发出结果,javascript,vue.js,emit,Javascript,Vue.js,Emit,我正在尝试发出引号的结果数,我在其中加上一个引号,并将文本结果从textarea推送到数组中。字符串文本已成功推送到数组,但引号数始终为零。我曾经用一种方法或分离方法尝试过,结果总是一样的 <template> <div> <p>Quotes</p> <b-form-textarea id="textarea-rows" v-model="value&
<template>
<div>
<p>Quotes</p>
<b-form-textarea
id="textarea-rows"
v-model="value"
placeholder="Enter something..."
rows="5"
></b-form-textarea>
<b-button variant="primary" @click='plusOneQuote(); addQuote();'>Add Quote</b-button>
</div>
</template>
<script>
import {EventBus} from '../main.js'
export default {
props: ['numberOfQuotes', 'quotes'],
data (){
return {
value: '',
}
},
methods: {
plusOneQuote() {
this.numberOfQuotes++;
EventBus.$emit('addedQuote', this.numberOfQuotes);
},
addQuote() {
this.quotes.push(this.value);
}
}
}
</script>
引用
添加报价
从“../main.js”导入{EventBus}
导出默认值{
道具:['numberOfQuotes','quotes'],
数据(){
返回{
值:“”,
}
},
方法:{
plusonekote(){
这个.numberOfQuotes++;
EventBus.$emit('addedQuote',this.numberOfQuotes);
},
addQuote(){
this.quotes.push(this.value);
}
}
}
当我从click和该方法中删除addQuote时,numberOfQuotes会变大一倍,我可以在另一个组件中毫无问题地显示出来。在click指令上调用单个方法是一种很好的做法,因此,不要:
<b-button variant="primary" @click='plusOneQuote(); addQuote();'>Add Quote</b-button>here
我以前遇到过这个问题,希望这个解决方案能有所帮助
编辑:
抱歉,错过了一些上下文,因为您正在尝试推送到这个。quotes是一个道具,您不能直接对它进行变异,您应该使用getter和setter来完成,或者更好,使用v-model。引用文件:
避免直接改变道具,因为每当父组件重新渲染时,该值将被覆盖。相反,使用基于道具值的数据或计算属性。道具变异:“可见”(在组件中找到)
<b-button variant="primary" @click='updateQuotes'>Add Quote</b-button> here
methods: {
plusOneQuote() {
this.numberOfQuotes++;
EventBus.$emit('addedQuote', this.numberOfQuotes);
},
addQuote() {
this.quotes.push(this.value);
},
updateQuotes(){
this.plusOneQuote();
this.addQuote();
}