父组件未在Vue中接收子事件

时间:2019-12-30 10:23:10

标签: vue.js vuejs2 vue-component

我遇到了一个事件被触发但父母似乎听不到的问题。我已经花了3个多小时试图找出问题,但无济于事。 这是父组件。

Thread.vue

    <script>
    import Tagging from '../components/Tagging.vue';

    export default {
        props: ['thread'],

        components: {Tagging},

        data () {
            return {
                repliesCount: this.thread.replies_count,
                locked: this.thread.locked,
                title: this.thread.title,
                body: this.thread.body,
                selectedTags: this.thread.selected_tags,
                form: {},
                editing: false
            };
        },
        methods: {
            tagsChanged(value){ <---- this handler is never called
                console.log("received")
            }
        }

    }
</script>

子组件

Tagging.vue

    <!-- Vue component -->
    <template>
     <div>
    <label class="typo__label">Tagging:</label>
    <multiselect
      v-model="value"
      tag-placeholder="Add this as new tag"
      placeholder="Search or add a tag"
      label="name"
      track-by="code"
      :options="options"
      :multiple="true"
      :taggable="true"
      @tag="addTag"
      @input="emitToParent" //this event handler emits an event to parent
    ></multiselect>
    </div>
   </template>

   <script>
     import Multiselect from "vue-multiselect";

export default {
  props: ["tags","previousTags","repliesCount"],
  components: {
    Multiselect
  },
  data() {
    return {
      value: this.previousTags,
      options: this.tags,
    };
  },
  methods: {
    addTag(newTag) {
      const tag = {
        name: newTag,
        code: newTag.substring(0, 2) + Math.floor(Math.random() * 10000000)
      };
      this.options.push(tag);
      this.previousTags.push(tag);
      this.form.selected_tags.push(tag)
    },
    emitToParent (event) {
      this.$emit('childToParent', this.value)//this event is being fired(verified on vue developer tools
    }
  }
};
</script>

在我的HTML上是模板

<tagging @childToParent="tagsChanged" :tags="some json" :previous-tags="some json"></tagging>

我尝试更改

@childToParent="tagsChanged"

v-on:childToParent="tagsChanged"

但这不起作用。

我想念什么?

谢谢

1 个答案:

答案 0 :(得分:0)

在表面上MenuItem menuItem = navigationView.getMenu().findItem( R.id.MENU_ITEM_ID ); TextView textView = (TextView) menuItem.getActionView(); //Set your text here textView.setText(YOUR_TEXT); 部分看起来还不错。

首先,您可以在$emit上添加console.log()来确保触发此方法吗。

第二,确保没有任何错误,请检查控制台。

第三,这是不正确的语法:emitToParent。这会引发错误。