1

我正在動態創建基因敲除視圖模型,並且此代碼工作正常。我想在這個視圖模型中添加驗證。我可以在此視圖模型中添加驗證嗎?這是好的方法,還是我應該自己創建viewmodel並自己添加驗證屬性?或者是否有任何客戶端驗證使用數據註釋?在動態視圖模型上進行基因敲除驗證

var viewModel = function() { 
     var self = this; 
     self.States =ko.observableArray(); 
     self.Countries =ko.observableArray(); 
     self.showStates = ko.observable(false); 
     self.saveData = function (self) { //save data function }; 
    } 
var VM= new viewModel(); 

$.ajax({ 
success: function(data) 
{ 
    var newVM = ko.mapping.fromJS(data, {}, VM); 
    // newVM.FirstName, newVM.LastName 
    // I want to add validation in this newVM 
} 

回答

2

由於您使用的KO映射插件加載數據,你也有掛鉤到「創造」事件和個別項目,如果你想添加驗證的選項。如下所示:

$.ajax({ 
success: function(data) 
{ 
    var mappingOption = {  
     'FirstName': { 
      create: function (option) { 
      return ko.observable(option.data).extend({ required: true }); 
      } 
     }, 
     'LastName': { 
      create: function (option) { 
      return ko.observable(option.data).extend({ required: true }); 
      } 
     } 
    } 
    // Now load your viewModel with the mapping option you just specified 
    var newVM = ko.utils.arrayMap(data, function (item) { 
     return ko.mapping.fromJS(item, mappingOption); 
    }); 
    // ... From now on... in your newVM... firstName and lastName will be 'required' 
} 

希望這會有所幫助。

謝謝。