首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ember:在验证函数中使用this.get()

Ember:在验证函数中使用this.get()
EN

Stack Overflow用户
提问于 2016-11-07 15:58:40
回答 2查看 355关注 0票数 0

我有一个输入字段的日期验证器:

代码语言:javascript
复制
export default Ember.Component.extend({
moment: Ember.inject.service(),
dateValidation: [{
    message: 'invalid date',
    validate: function(inputDate) {
      if (!inputDate) {
        return true; //allow empty date
      }
      return this.get('moment').moment(inputDate, 'YYYY-MM-DD', true).isValid();
    }
  }],
});

我使用ember-moment来验证日期。我通常使用this.get('moment').moment(...),但在函数中没有定义this.get() (没有定义get()函数,因为this引用了验证器函数,而不是具有get()函数的ember组件)。我知道this引用的是函数,而不是我的组件,但是我如何修复它呢?使用Ember.get()对我不起作用。

我使用的是ember-paper,并且paper-input有一个customValidations-attribute,它必须是一个数组(在我的例子中是dateValidation)

例如:

代码语言:javascript
复制
{{paper-input
   type="date"
   value=atDate
   onChange=(action (mut atDate))
   customValidations=dateValidation}}
EN

回答 2

Stack Overflow用户

发布于 2016-11-07 16:29:00

  1. 的第一个选项就像评论中提到的@vothaison,你可以将this引用传递给验证方法。
  2. 你可以在你的对象定义中注入moment

导出默认消息({ moment: Ember.inject.service(),dateValidation:[],init() { this._super(...arguments);var objectValidation ={ message:'invalid date',myMoment: this.get('moment'),validate: function(inputDate) { if (!inputDate) { return true;//允许空日期} return this.get('myMoment').moment(inputDate,'YYYY-MM-DD',true).isValid();} };true}

});

票数 0
EN

Stack Overflow用户

发布于 2016-11-09 01:48:02

我无法对此进行测试,但一个简单的bind看起来应该可以解决这个问题:

代码语言:javascript
复制
export default Ember.Component.extend({
moment: Ember.inject.service(),
dateValidation: [{
    message: 'invalid date',
    validate: function(inputDate) {
      if (!inputDate) {
        return true; //allow empty date
      }
      return this.get('moment').moment(inputDate, 'YYYY-MM-DD', true).isValid();
    }.bind(this)
  }],
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40460330

复制
相关文章

相似问题

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