自学的菜鸟 2022-06-01 20:30 采纳率: 61.6%
浏览 75
已结题

vue中apply如何使this指向vue

调用errorMsg时,内部的this指向undefind,如何用apply让errorMsg的this指向vue


 
 methods: {
        checkGoodForm() {
            function errorMsg(msg) {
                    this.$message.error(msg)
            }
            this.goodForm.tilte === '' && errorMsg('标题不能为空')
            this.goodForm.tilte.length < 20 && errorMsg('标题最少十个汉字')
        }
}
  • 写回答

3条回答 默认 最新

  • Heerey525 前端领域新星创作者 2022-06-01 22:15
    关注

    tilte 单词拼错了,应该是title
    首先按照你的要求errorMsg.call(this, "标题不能为空")可以满足,但是语句逻辑不对,为空的时候会将两个错误提示展示出来,建议改成下方两种写法之一

    checkGoodForm() {
      function errorMsg(msg) {
        this.$message.error(msg);
      }
      if (!this.goodForm.title) return errorMsg.call(this, "标题不能为空");
      if (this.goodForm.title.length < 20) errorMsg.call(this, "标题最少十个汉字");
    },
    

    更常规的是箭头函数这种

    checkGoodForm() {
      const errorMsg = msg => {
        this.$message.error(msg);
      }
      if (!this.goodForm.title) return errorMsg("标题不能为空");
      if (this.goodForm.title.length < 20) errorMsg("标题最少十个汉字");
    },
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月10日
  • 已采纳回答 6月2日
  • 创建了问题 6月1日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上