1

ノックアウト ビューモデルを動的に作成していますが、このコードは正常に動作しています。このビューモデルに検証を追加したい。このビューモデルに検証を追加できますか? これは良いアプローチですか、それともビューモデルを自分で作成して検証属性を自分で追加する必要がありますか? または、クライアント側の検証はデータ注釈で機能しますか?

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 
}
4

1 に答える 1

2

KO Mapping プラグインを使用してデータをロードしているため、「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'
}

お役に立てれば。

ありがとう。

于 2013-03-04T13:49:37.580 に答える