我正在尝试从组件中访问一个方法。该组件附加了一个动态参考文件:
<team-card
:ref="`team-card-details-${team.id}`"
class="mt-5"
v-for="team in teams"
v-on:delete-team="DELETE_TEAM"
:show-delete-btn="true"
:key="team.name"
:team="team"></team-card>团队卡组件
methods: {
REFRESH_CARD(){
this.$refs[`team-card-details-component-${this.team.id}`].refreshcard()
},
REMOVE_REFRESH_ANIMATION(){
this.$refs[`team-card-details-component-${this.team.id}`].removeRefreshAnimation()
}
}每当我单击卡片中的一个按钮时,我都想访问REFRESH_CARD函数,这是我用这行代码所做的:
this.$refs['team-card-details-' + team.id].REFRESH_CARD()我收到一个错误[Vue warn]: Error in v-on handler: "TypeError: this.$refs[("team-card-details-" + team.id)].REFRESH_CARD is not a function"
我在另一种方法中也这样做了(但不是对动态生成的ref)。有人建议我为什么要犯这个错误吗?
如果我做了一个简单的console.log,我可以看到函数的存在和正确引用的组件:

发布于 2019-07-12 15:10:35
我不知道为什么,但是refs返回了一个数组,我必须访问数组的第一个位置(我不太确定为什么,但是如果我知道原因,我会更新答案)。所以最后的代码应该是:
this.$refs['team-card-details-' + team.id][0].REFRESH_CARD()编辑
正如@0x5453通过链接所指出的
在具有v-for的元素/组件上使用时,注册的引用将是包含DOM节点或组件实例的Array。
https://stackoverflow.com/questions/57009448
复制相似问题