首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ref vue绑定的访问方法

ref vue绑定的访问方法
EN

Stack Overflow用户
提问于 2019-07-12 14:53:28
回答 1查看 160关注 0票数 2

我正在尝试从组件中访问一个方法。该组件附加了一个动态参考文件:

代码语言:javascript
复制
<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>

团队卡组件

代码语言:javascript
复制
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函数,这是我用这行代码所做的:

代码语言:javascript
复制
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,我可以看到函数的存在和正确引用的组件:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-12 15:10:35

我不知道为什么,但是refs返回了一个数组,我必须访问数组的第一个位置(我不太确定为什么,但是如果我知道原因,我会更新答案)。所以最后的代码应该是:

代码语言:javascript
复制
this.$refs['team-card-details-' + team.id][0].REFRESH_CARD()

编辑

正如@0x5453通过链接所指出的

在具有v-for的元素/组件上使用时,注册的引用将是包含DOM节点或组件实例的Array。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57009448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档