1

我是新來的淘汰賽,請耐心等待。映射後的敲除驗證

我試圖使用映射插件來將從服務器接收的Json數據映射到現有viewModel實例。我能夠做到這一點沒有任何問題。但在我的viewModel中,我使用了驗證插件,因此只要我映射數據並將其綁定到UI,驗證就會啓動並立即顯示錯誤信息。

是否有方法在單擊提交按鈕之前不顯示該錯誤消息。或者我做錯了什麼?

這裏是的jsfiddle link

出於某種原因,所以沒有讓我提出這個問題,除非伴隨着代碼,所以這裏是從的jsfiddle複製的JavaScript代碼 -

ko.validation.configure({ 
     parseInputAttributes: true 
}); 

var data = { name: null, email: "[email protected]" }; 

function vm(){ 
    this.name = ko.observable().extend({required:true}); 
    this.email = ko.observable().extend({required:true}); 
    this.validationCheck = ko.validatedObservable(this); 
} 


var viewModel = ko.mapping.fromJS(data, {}, new vm()); 
ko.applyBindings(viewModel); 

回答

0

一種方法,你可以嘗試最初是隱藏所有驗證消息,然後將函數添加到您的視圖模型,再次顯示它們。當點擊提交按鈕時,您將調用該函數。

ko.validation.configure({ 
    parseInputAttributes: true 
}); 

var data = { name: "Joe Shmo", email: "[email protected]" }; 

var validationMapping = { 
    'name': { 
     create: function(options) { 
      return ko.observable(options.data).extend({required: true}); 
     } 
    } 
} 

var viewModel = ko.validatedObservable(ko.mapping.fromJS(data, validationMapping)); 

viewModel().showValidation = function() 
{ 
    $$('.validationMessage').set('style', 'display:inline'); 
    return viewModel.isValid(); 
} 
ko.applyBindings(viewModel); 

演示:http://jsfiddle.net/bS62w/3/

+0

感謝李..這是周圍的工作。我認爲有一個適當的方式來處理這個問題,或者我做錯了什麼。我檢查文件,將很快更新任何調查結果。 – Sai