Validation ember变更集验证未按预期使用布尔值

Validation ember变更集验证未按预期使用布尔值,validation,ember.js,Validation,Ember.js,我有一个Ember对象,它的属性是一个布尔字段,我想用Ember变更集验证来验证它 这是典型的“同意条款”复选框 以下是哈佛商学院代码: {{one-way-checkbox changeset.agree_terms class="form-control" update=(action (mut changeset.agree_terms))}} {{#each changeset.error.agree_terms.validation as |error|}} <sp

我有一个Ember对象,它的属性是一个布尔字段,我想用Ember变更集验证来验证它

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

以下是哈佛商学院代码:

{{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}}

问题是,由于某些原因,这永远不会正确地验证为真,我总是收到错误消息…知道我在这里做错了什么吗?

这有点棘手;但我明白了。一定要利用下面。自从您正在使用
validateFormat
;以下内容将在最后运行。如果你看看我提供的链接;有一张支票
!canInvoke(值“匹配”)
会导致问题。由于复选框的选中值是布尔值,并且不能对布尔值调用
match
,因此最终验证总是无效的

你能做什么?好;我不是
ember变更集验证
ember验证程序
方面的专家,但编写自定义验证程序非常容易。这就是我在下面所做的。它似乎工作得很好


我所理解的是;将布尔值与
格式
类型验证器一起使用不是一个好主意(它显然不起作用);我只希望它被记录在案。我希望这对你有帮助。

哇!非常感谢您提供的详细答案,我可能会在ember changeset validations Github中发布这篇文章,这样他们就可以对其进行记录:)这是一个好主意;它也可能帮助其他人。谢谢
agree_terms: validateFormat({
regex: /^(true)$/,
message: 'You need to agree on Terms!'
})