2017-05-29 57 views
1

我有一個Ember對象,它具有屬性布爾字段,我想驗證它是否帶有ember-changeset-validation。ember-changeset-validation不能按預期的方式與布爾值工作

這是典型的「同意條款」複選框。

這裏是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!' 
}) 

事情是,由於某種原因,這個從來沒有驗證爲了正確,我總是得到錯誤信息......任何想法我在這裏做錯了嗎?

回答

2

這有點棘手;但我明白這一點。 ember-change-set-validations確實使用下面的ember-validators。以來;你正在使用validateFormat;最後運行以下code。如果你看看我提供的鏈接,有一個檢查!canInvoke(value, 'match')導致你的問題。由於複選框的選中值是一個布爾值,因此無法在布爾值上調用match,因此最終導致驗證無效。

你能做什麼?好;我不是ember-change-set-validationsember-validators的專家,但編寫自定義驗證器非常容易。這是我在以下twiddle中所做的。它似乎工作得很好。

我的理解是,與format類型驗證器一起使用布爾值不是一個好主意(它顯然不起作用);我只希望它被記錄在案。我希望這可以幫助你。

+0

哇!感謝一堆的詳細的答案,我可能會發布這個在ember-changeset-validation Github,所以他們可以將其文檔:) – AlejandroVK

+0

這是一個好主意,它也可能幫助其他人。謝謝。 – alptugd

相關問題