2017-02-19 15 views
0

私の見解は、このようなものです:ビューからコンポーネントのメソッドを呼び出すにはどうすればよいですか? (vue.js 2)

<div class="row no-gutter"> 
    <div class="col-md-9 col-xs-12"> 
     <div class="wrap-tabs"> 
      <ul class="nav nav-tabs nav-cat"> 
       <li role="presentation" class="active"><a href="#" data-toggle="tab" @click="getPlayer(1)">England</a></li> 
       <li role="presentation"><a href="#" data-toggle="tab" @click="getPlayer(2)">Spain</a></li> 
       <li role="presentation"><a href="#" data-toggle="tab" @click="getPlayer(3)">Italy</a></li> 
      </ul> 
     </div> 
    </div> 
</div> 
<br> 
<div class="tab-content"> 
    <div role="tabpanel" class="tab-pane active"> 
     <top-player-view country_id="1"></top-player-view> 
    </div> 
</div> 

マイコンポーネントのトッププレーヤーのビューは、このようなものです:

<template>  
    ... 
</template> 

<script> 
    export default{ 
     props:['country_id'], 
     created() { 
      this.$store.dispatch('getTopPlayers', this.country_id) 
     } 
     methods: { 
      getPlayer: function(country_id) { 
       this.$store.dispatch('getTopPlayers', country_id) 
      } 
     } 
    } 
</script> 

私はトッププレーヤーのビューコンポーネントにgetPlayerメソッドを呼び出してみてください。メソッドをビューから呼び出す。私はタブをクリックすると、あなたは、私は、コンソール上で確認し、

の上に私のコードを見ることができ、エラーが存在します。

[Vue warn]: Property or method "getPlayer" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option. (found in root instance)

Uncaught TypeError: getPlayer is not a function

私はそれを解決できますか?

+0

$refs.player.getPlayer(1)を呼び出す ? –

+0

私がVue2で間違っていない場合、created()はmounted()の代わりに使用されます。 – peaceman

+0

@ダニエルT.いいえ、私はそれを使用していないようだ –

答えて

1

のメソッドを実際に呼び出す必要があります。

一つの解決策:あなたのtop-player-viewref="player"を追加し、あなたは `VUE-loader`を使用していますだけではなく、getPlayer(1)

関連する問題