Knockout.js 动态viewmodel的敲除验证

Knockout.js 动态viewmodel的敲除验证,knockout.js,data-annotations,knockout-mapping-plugin,knockout-validation,Knockout.js,Data Annotations,Knockout Mapping Plugin,Knockout Validation,我正在动态创建knockout viewmodel,这段代码运行良好。我想在此viewmodel中添加验证。我可以在此viewmodel中添加验证吗?这是一种好方法,还是应该自己创建viewmodel并添加验证属性?或者是否有任何客户端验证与数据注释一起工作 var viewModel = function () { var self = this; self.States =ko.observableArray(); self.Countrie

我正在动态创建knockout viewmodel,这段代码运行良好。我想在此viewmodel中添加验证。我可以在此viewmodel中添加验证吗?这是一种好方法,还是应该自己创建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 
}

由于您正在使用KO映射插件加载数据,因此如果需要,您还可以选择挂接到“create”事件中并添加单个项的验证。例如:

$.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'
}
希望这有帮助

谢谢