2013-04-17 175 views
0
多個屬性

什麼是處理在與微風情況下驗證推薦的方式?驗證在微風

場景:我有startDateendDateuseDate領域的實體。如果useDate爲真,那麼我想驗證 startDateendDate是有效日期,並且endDate> startDate

Breeze文檔中建議的方法是創建一個自定義驗證器並將其註冊到實體上。我用這種方法看到的問題是,我會那麼需要手動調用validateEntity()每次的這三個屬性的變化之一,以具有添加到實體的錯誤收集驗證錯誤。另一種在單個屬性上添加自定義驗證器的推薦方法不提供對實體的訪問(只是當前屬性值),因此這也不是一個好選擇。

我可以訂閱每個撬開屬性更改事件的實體,然後調用validateEntity()但這似乎笨拙。

有沒有什麼辦法,以自定義實體級驗證添加到實體,但這樣當相關屬性的一個改變,實體級驗證調用它與一個或多個屬性相關聯?看起來Breeze在這裏缺少一個常見的驗證用例場景,但我可能錯過了一些東西。

謝謝,理查德

回答

1

我想你可以申請針對每個起始日期,結束日期和useDate字段自定義驗證功能,以便更改任何這些屬性會引發同樣的邏輯。

望着微風代碼它看起來像傳遞給你的驗證功能將有一個實體屬性,以便您可以在實體訪問其他屬性上下文對象(未測試)。

之後,你可以,如果需要,還可以使用代碼this post複製的驗證功能,成爲knockout.validation規則在你的用戶界面結合。