Javascript 如何从视图中调用组件中的方法?(vue.js 2)

Javascript 如何从视图中调用组件中的方法?(vue.js 2),javascript,vue.js,vuejs2,vue-component,Javascript,Vue.js,Vuejs2,Vue Component,我的看法是这样的: <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="

我的看法是这样的:

<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>


我的组件顶级播放器视图如下所示:

<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>

...
导出默认值{
道具:['country_id'],
创建(){
此.$store.dispatch('getTopPlayers',此.country\u id)
}
方法:{
getPlayer:函数(国家/地区id){
此.$store.dispatch('getTopPlayers',国家/地区id)
}
}
}
我尝试在TopPlayer视图组件中调用getPlayer方法。我从视图调用该方法。你可以在上面看到我的代码

当我单击该选项卡时,我检查控制台上存在的错误:

[Vue warn]:未在上定义属性或方法“getPlayer” 实例,但在渲染期间被引用。确保声明为被动 数据选项中的数据属性。(在根实例中找到)

未捕获类型错误:getPlayer不是函数


如何解决它?

您需要实际调用元素上的方法

一个解决方案:
ref=“player”
添加到您的
顶级玩家视图中
,然后调用
$refs.player.getPlayer(1)
,而不仅仅是
getPlayer(1)

您是否在使用
vue加载程序
?如果我没有弄错的话,Vue2 created()将被mounted()替换为mounted()。@Daniel T.,似乎没有使用it@peaceman,似乎问题不在那里