【问题标题】:Jquery validator change `this` ES6 code [duplicate]Jquery验证器更改`this` ES6代码[重复]
【发布时间】:2018-10-27 17:56:15
【问题描述】:

我有带有构造函数和验证方法的 es6 类。

class Popups {
  constructor(selector) {
    this.app = selector;
  }

  validate() {
    $.validator.addMethod('atLeastOneLowercaseLetter', (value, element) => {
        return this.optional(element) || /[a-z]+/.test(value);
        // how to replace `this` ??
      },
      'Must have at least one lowercase letter'
    );
  }
}

我的this 指的是我的班级,但我需要使用我的验证表单获取$.validator。这个怎么换?

如果我写 $.validator.optional(element) || /[a-z]+/.test(value) 我得到错误 $.validator.optional is not a function

【问题讨论】:

  • 我假设您知道箭头函数的工作原理,因此,您可以直接在该处理程序中使用对象 $.validator
  • 对不起,我不使用普通的function。我需要'=>'
  • @Ele $.validator 没有我的表格,我不知道如何将我的表格发送到$.validator
  • @РоманТатаринов 你不能使用=>。为什么你认为你“需要”它,你为什么不直接使用一个有效的function

标签: javascript jquery ecmascript-6 jquery-validate es6-class


【解决方案1】:

在这种情况下,不要使用arrow 函数,因为它没有自己的this。改为使用普通函数表达式作为回调。

【讨论】:

  • 对不起,我不使用普通的function
  • 这个答案不值得一票否决,因为它是另一种选择。
  • @РоманТатаринов 不使用函数表达式的原因是什么?
  • @Kristianmitk 项目有es-linting,什么时候禁止正常使用function
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-03
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多