自学的菜鸟 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日