子コンポーネントへの小道具としての機能を渡し、Vueの中でそこからそれを呼び出す方法?

ヤシュ・ガウル:

私は、そのは、Vueの中に子コンポーネントへの小道具として関数を渡すことをお勧めしません知っています。私はそれを行うにした場合でも、どのようにそれは可能ですか?これは私が今まで試してみましたものです -

私の子コンポーネント -

<template>
 <b-card :style="{'overflow-y': 'scroll', 'border-top': '0px', 'height': 'calc(100% - 53px)', 'border-top-left-radius': '0px', 'border-top-right-radius': '0px'}">                            
                                        <div class="img-magnifier-container" :style="{'position': 'relative'}">
                                            <b-img :id="('og' + curr_doc_num) + index_page" :src="pageImages[responseData[curr_doc_num-1]['page_nums'][index_page-1]-1].pageValue" fluid-grow alt="Fluid-grow image" @load="updateOnResize" >
                                            </b-img>

                                            <div 
                                                :key="j" 
                                                :id="(j)" 
                                                @mouseover="show_divs($event)"
                                                @mouseout="hide_divs($event)"
                                                v-bind:style="{
                                                    left: divKey['bbox']['left'] + 'px', position:'absolute', top:divKey['bbox']['top'] + 'px', height:divKey['bbox']['height'] + 'px', width: divKey['bbox']['width'] + 'px', 'border': divKey['border-width'] + 'px solid rgb(' + 
                                                divKey['color'][0] + ',' +  divKey['color'][1] + ',' + divKey['color'][2] + ')', 'pointer-events': divKey['pointer-events'], 'z-index': divKey['z-index'], 'cursor': 'pointer' }" 

                                                v-on:click="find_cordinates($event)" 
                                                v-for="(divKey, j) in divsToBeRendered" 
                                                />
                                        </div>
                                    <!-- </b-tab>
                                </template>
                            </b-tabs> -->
                        </b-card>
</template>

ここでは、私はあなたが見ることができるようshow_divs($イベント)、hide_divs($イベント)および他の関数を呼んでいます。スクリプトは次のとおりです -

<script lang="ts">
import { Component, Vue, Watch, Prop } from "vue-property-decorator";

@Component({
  components: {}
})
export default class Showcase extends Vue {

  @Prop() public show_divs: any;

  @Prop() public hide_divs: any;

  @Prop() public find_cordinates: any;

  @Prop() public divsToBeRendered: any;

  public mounted() {
    console.log("show", this.show_divs());
  }
}

親コンポーネントテンプレートは次のとおりです -

  <ResultShowcase

              :updateOnResize="updateOnResize"
              :show_divs="show_divs"
              :hide_divs="hide_divs"
              :find_cordinates="find_cordinates"
              :divsToBeRendered="divsToBeRendered"
              >

  </ResultShowcase>

これらの機能は、親コンポーネントで正常に動作しています。何が私がここに間違っているのでしょうか?また、マウント上の子コンポーネントに私が「show_divsを()」を実行しようとしたが、それは実行されますdoesntの。すべてのヘルプは高く評価されています。

Boussadjraブライム:

あなたは、子コンポーネントからイベントを放出し、親1の内側にそれを実行できます。

 @mouseover="$emit('show_divs',$event)"

親コンポーネントで:

  v-on:show_divs="show_divs"

方法 :

methods:{
  show_divs(event){
    console.log(event)
  }
}

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=406596&siteId=1