2012-10-23 203 views
0

我正在使用knockout.js和knockout.validation。我創建了包含書的作者名和書名 2性能一書中視圖模型:檢查用戶輸入isValid

function BookViewModel(bookObject) { 
     var self = this; 
     self.AuthorName = ko.observable(bookObject.AuthorName) 
      .extend({ 
       required: { message: "Please enter menu name" }, 
       minLength: 4, 
       maxLength: 10 
      }); 
     self.Name = ko.observable(bookObject.Name) 
      .extend({ 
       required: { message: "Please enter course name" }, 
       minLength: 4, 
       maxLength: 10 
      }); 
} 

我已經在性能應用了本地驗證規則。現在我知道,我們可以檢查wheteher屬性值是有效還是無效的:

 bookViewModelObject.AuthorName.isValid() 

現在,通過上面的語句的幫助下,我們可以檢查是否user`s輸入作者名滿足我們的驗證規則。我的問題是我如何檢查bookViewModel的所有屬性是否有效,在一個語句?意思是這樣的:

 bookViewModelObject.isValid() 
+0

您可以爲其創建一個計算屬性。 –

+0

@YograjGupta感謝您的回覆,但您能否給我一個簡短的示例代碼來說明您的建議? –

+0

like self.isValid = ko.computed(function(){ return self.AuthorName.isValid()&& self.Name.isValid() },self); –

回答

2

您可以使用ko.validation.group

var viewModel = new BookViewModel(data); 
viewModel.errors = ko.validation.group(viewModel); 

viewModel.errors你將不得不在viewModel錯誤數。

這裏是一個小提琴:http://jsfiddle.net/vyshniakov/3J3qV/

0

不知道這是否工作過,但現在(與KnockoutJS 3.0和驗證插件2.1),你可以做到這一點,即。

ko.validation.init(); 
var validatedViewModel = ko.validatedObservable(new BookViewModel(book))(); 
ko.applyBindings(validatedViewModel); 

validatedViewModel.isValid(); 

請注意ko.validatedObservable()方法。

這裏是適當的jsfiddle