首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >成员-验证如何实现延迟验证

成员-验证如何实现延迟验证
EN

Stack Overflow用户
提问于 2016-11-23 16:01:30
回答 1查看 352关注 0票数 0

在我的成员组件中,我使用的是ember-validations:v2.0.0-alpha.5和成员,对于属性中的每一个更改,我都有一个自动运行的验证,但是我只想在技术术语调用验证中调用“()”方法时才运行这个验证。

请找到下面的代码样本,

代码语言:javascript
复制
import Ember from 'ember';
import EmberValidations, { validator } from 'ember-validations';

export default Ember.Component.extend(EmberValidations, {

didReceiveAttrs() {
    this.set('newBook', this._bookModel().create());
},

_bookModel(data = {}) {
return Ember.Object.extend(EmberValidations, {
  bookVersion: null,
  isEditable: false,
  validationActive: false,
  validations: {
    bookVersion: {
      inline: validator(function() {
if(this.validationActive){ //Here this.validationActive always return undefined
        var version = this.model.get('bookVersion') || "",
          message = [];

         if (Ember.isEmpty(bookVersion)) {
           message.push("Book Version is mandatory!!!");
         }

        if (message.length > 0) {
          return message.join(',');
        }
        }
      })
    }
  }
}, data);
}

});

actions: {
        this.get('newBook').set("validationActive",true);
        this.get('newBook').validate().then(() => {
             //Do the action
        }
}

我希望上面的验证只运行调用"this.get('newBook').validate()“。我是全新的成员,所以向下选民,请把您的意见,然后下来投票给其他人,请让我知道任何更多的代码样本。

你的帮助应该是值得赞赏的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-23 21:55:11

您所使用的用于验证(“成员-验证”)的注释是非常流行的,与其他文档相比,它的文档非常好。如果您查看文档,文档中有一个名为“条件验证器”的部分。您可以使用布尔属性来控制要执行验证的时间。

您可以在下面的转盘中看到我的意思的说明。我在应用程序控制器中为用户名创建了一个简单的验证。name字段的长度必须至少为5,只有在条件validationActive为真时才能执行验证。最初,条件为false;这意味着验证器没有工作,并且Controller的isValid属性(它是从EmberValidations Mixin继承的)为真。如果使用提供的按钮切换属性;验证将运行(因为条件现在设置为true;因此验证被触发),isValid将返回为false。如果您更改了该值,验证结果将相对于用户名的值进行适当的更改。如果您再次切换该条件,将其设置为false;那么无论用户名的valie是什么,isValid都将变为true。

我希望这能让您了解如何控制您的验证何时起作用。

以下是编辑之后应该做的事情:字段是未定义的,因为您试图在内联验证器中访问组件自己的validationActive字段。请按以下方式获得validationActivethis.model.get('validationActive')并试一试。应该管用的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40769051

复制
相关文章

相似问题

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