【问题标题】:Knockout validation on dynamic viewmodel动态视图模型的淘汰赛验证
【发布时间】:2013-02-18 10:35:04
【问题描述】:

我正在动态创建淘汰视图模型,此代码运行良好。我想在这个视图模型中添加验证。我可以在这个视图模型中添加验证吗?这是好方法还是我应该自己创建视图模型并自己添加验证属性?或者任何客户端验证都适用于数据注释?

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 
}

【问题讨论】:

    标签: knockout.js data-annotations knockout-mapping-plugin knockout-validation


    【解决方案1】:

    由于您使用 KO Mapping 插件加载数据,因此您还可以选择挂钩到“创建”事件并根据需要为单个项目添加验证。如下所示:

    $.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'
    }
    

    希望这会有所帮助。

    谢谢。

    【讨论】:

      猜你喜欢
      • 2011-12-21
      • 2015-08-17
      • 2017-09-26
      • 2013-06-23
      • 2023-03-09
      • 1970-01-01
      • 2012-02-18
      • 2013-01-29
      • 2013-06-22
      相关资源
      最近更新 更多