2014-01-21 89 views
7

我檢查我提交的驗證視圖模型as described here on SO, actually敲除驗證 - 如何顯示單個錯誤消息

除了「提交」操作外,我的表單還有一個「保存進度」操作。它以幾乎相同的方式提交給服務器,但所需的字段較少。

我想保留四個絕對必需的字段,他們目前在視圖模型中...即保持它們在較大的驗證組中提交。

Knockout Validation有沒有一種方法可以像完全驗證組一樣以showAllMessages()的方式顯示特定消息?我查看了源代碼,但找不到像showMessage()附加到單個錯誤的任何內容。

或者是有沒有辦法挑選從我的視圖模型領域,並把它們在自己的驗證組(但讓他們大組中爲好)?

所以,作爲一個例子:

var ViewModel = ko.validatedObservable({ 
    requiredForSave1: ko.observable().extend({ required: true }), 
    requiredForSave2: ko.observable().extend({ required: true }), 
    requiredForSubmit: ko.observable().extend({ required: true }) 
    // ... and many more. 
}); 

$('#sumbit').on('click', function(){ 

    //check the entire validation group 
    if (ViewModel.errors().length === 0){ 
    doSubmit(); 
    } 
    else{ 
    ViewModel.errors.showAllMessages(); 
    } 
}); 

$('#save').on('click', function(){ 

    //check only part of the validation group 
    if (ViewModel.requiredForSave1.isValid() && 
     ViewModel.requiredForSave2.isValid()){ 

    doSubmit(); 
    } 
    else{ 
    //show only one or two specific validation messages. 
    //??? 
    } 

}); 

有沒有辦法來填補這最後else塊,或者我應該採取一種不同的方法呢?

感謝

回答

7

或者是有沒有辦法挑選從我的視圖模型和 領域把他們在自己的驗證組(但讓他們大 組爲好)?

是的,您可以根據需要定義多個組;而觀察者可以在多個驗證組中。

因此,舉例來說,假設您的驗證小組對所有在您的視圖模型中的錯誤是:

ViewModel.errors = ko.validation.group(ViewModel); 

您還可以添加這樣的個人組:

ViewModel.saveErrors = ko.validation.group([ViewModel.requiredForSave1, ViewModel.requiredForSave2]); 

另外,通過在驗證組上調用showAllMessages,您只會顯示該組內的觀察值的消息。 ViewModel.saveErrors.showAllMessages()將只顯示爲requiredForSave1requiredForSave2

希望幫助

+2

完美的驗證消息。謝謝@ rwisch45。也可以在此處找到:[官方文檔](https://github.com/Knockout-Contrib/Knockout-Validation/wiki/Validating-Only-Specific-Observables)。不知道爲什麼我發現該文檔網站很難瀏覽,但我確實如此。 – Brad

+0

因此,顯示觀察值的單個錯誤消息的唯一方法是將其添加到組中? –

相關問題