ember-changeset-validations无法按预期使用布尔值

时间:2017-05-29 16:18:28

标签: validation ember.js

我有一个Ember对象,其属性是一个布尔字段,我想用ember-changeset-validations验证。

这是典型的“同意条款”复选框。

这是hbs代码:

{{one-way-checkbox changeset.agree_terms 
class="form-control" 
update=(action (mut changeset.agree_terms))}}

{{#each changeset.error.agree_terms.validation as |error|}}
    <span class="text-danger help-block m-l-3">{{t (concat 'bookings.error.' error)}}</span>
{{/each}}

我有一个验证文件,其中对此变更集成员的特定验证是:

agree_terms: validateFormat({
regex: /^(true)$/,
message: 'You need to agree on Terms!'
})

事情是,由于某种原因,这从未正确验证为TRUE,我总是得到错误信息......任何想法我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

这有点棘手;但我想出来了。 ember-change-set-validations确实可以使用下面的ember-validators。以来;你正在使用validateFormat;最后运行以下code。如果你看看我提供的链接;检查!canInvoke(value, 'match')会导致问题。由于复选框的选中值是布尔值,并且您无法在布尔值上调用match,因此您最终会得到无效的验证。

你能做什么?好;我不是ember-change-set-validationsember-validators的专家,但编写自定义验证器非常容易。这就是我在以下twiddle中所做的。它看起来工作得很好。

我理解的是;使用带有format类型验证器的布尔值并不是一个好主意(它显然不起作用);我只希望它有记录。我希望这会对你有所帮助。