Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试从总线vuejs发出结果_Javascript_Vue.js_Emit - Fatal编程技术网

Javascript 尝试从总线vuejs发出结果

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&

我正在尝试发出引号的结果数,我在其中加上一个引号,并将文本结果从textarea推送到数组中。字符串文本已成功推送到数组,但引号数始终为零。我曾经用一种方法或分离方法尝试过,结果总是一样的

<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();
        }