mac_05185 2022-10-13 09:57 采纳率: 67.1%
浏览 52
已结题

vue组件自定义事件,提示ref不是一个方法

vue的组件自定义事件,提示我说this.$refs.student.$on is not a function,是哪里出现了问题

img

下面是我的app代码和student代码:

// App.vue
<template>
  <div class="app">
    <h1>{{ msg }}</h1>
    
    <School :getSchoolName="getSchoolName" />
    
    
    <hr />
    <Student ref="student" />
  </div>
  <hr />
  <img alt="Vue logo" src="./assets/logo.png" />
  <HelloWorld msg="Welcome to Your Vue.js App" />
</template>

<script>
import HelloWorld from "./components/HelloWorld.vue";
import School from "./components/School.vue";
import Student from "./components/Student.vue";

export default {
  name: "App",
  data() {
    return {
      msg: "this is hello vue",
    };
  },
  methods: {
    getSchoolName(name) {
      console.log("app 接受了学校名 ", name);
    },
    getStudentName(name) {
      console.log('app 接受了学生姓名 ', name);
    }
  },
  components: {
    HelloWorld,
    School,
    Student,
  },
  mounted() {
    setTimeout(() => {
      this.$refs.student.$on('atguigu', this.getStudentName)
    }, 20);
  },
};
</script>

<style>
.app {
  height: auto;
  width: 50%;
  background-color: blueviolet;
  padding: 10px;
}

#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

<template>
    <div class="student">
        <h2>学生姓名:{{name}}</h2>
        <h3>学生性别: {{sex}}</h3>
        <button @click="sendStudentName">把学生给app</button>
    </div>
</template>

<script>


export default ({
    name: 'Student_vue',
    data() {
        return {
            name: 'mac',
            sex: 'man'
        }
    },
    methods: {
        sendStudentName() {
            // 触发student实例身上的硅谷事件
            this.$emit('atguigu', this.name);
        }
    }
})
</script>


<style scoped>
.student {
    background-color: teal;
    padding: 5px;
    margin-top: 10px;
}
</style>
  • 写回答

5条回答 默认 最新

  • 音药 2022-10-13 13:47
    关注

    vue3与vue2语法不一样

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 10月21日
  • 已采纳回答 10月13日
  • 创建了问题 10月13日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程