Heim  >  Fragen und Antworten  >  Hauptteil

javascript – Eine untergeordnete Komponente löst ein benutzerdefiniertes Ereignis der übergeordneten Komponente aus, aber die übergeordnete Komponente antwortet nicht.

Das Folgende ist eine Unterkomponente @change='showChange' ist ein Unterkomponentenereignis
Die folgende Vorlage ist als Auftragstypkomponente registriert

<template>
<select name="dType" class="form-control" v-el:select @change='showChange'>
      <option value="" v-if="type=='selectAll'">全部</option>
      <option v-for="branch in branchList" :value="branch.id" track-by="$index">
        {{branch.name}}
      </option>
  </select>
</template>

Die folgenden Methoden sind Unterkomponenten:

        showChange(event) {
            for (let branch of this.branchList) {
                if (branch['id'] === event.target.value) {
                    this.$emit('showChange',branch['prefix']);
                }
            }

Das Folgende ist die übergeordnete Komponente

<order-type @showChange='alert(2)'></order-type>        

Aber Warnung (2) wird nicht ausgeführt

大家讲道理大家讲道理2663 Tage vor963

Antworte allen(3)Ich werde antworten

  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-07-05 11:05:26

    你直接这么写有问题的吧
    应该是

    <order-type @showChange='alertFun'></order-type>     
    父组件有一个方法
    methods: {
        alertFun () {
            alert(2)
        }
    }

    这里应该传递的是父组件方法的一个函数名,而不是直接写alert(2)

    Antwort
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-07-05 11:05:26

    应该是这块出问题了
    <option v-for="branch in branchList" :value="branch.id" track-by="$index">
    for in对象循环取得的是索引,不是值,所以取不到branch.id,可以改成for of

    Antwort
    0
  • 伊谢尔伦

    伊谢尔伦2017-07-05 11:05:26

    以下为子组件 @change='showChange'为子组件事件
    以下模板注册为 order-type组件

    <template>
    <select name="dType" class="form-control" v-el:select @change:parentChage='showChange'>

      <option value="" v-if="type=='selectAll'">全部</option>
      <option v-for="branch in branchList" :value="branch.id" track-by="$index">
        {{branch.name}}
      </option>

    </select>
    </template>

    以下为子组件方法:

        showChange(event) {
            for (let branch of this.branchList) {
                if (branch['id'] === event.target.value) {
     /注意此行的修改/               this.$emit('parentChage',branch['prefix']);
                }
            }
            
            
            
    以下是父组件
    <order-type @showChange='alert(2)'></order-type>        
            
     但alert(2) 并未执行 

    Antwort
    0
  • StornierenAntwort