现有视图模型的Knockout验证

时间:2013-10-16 16:39:04

标签: javascript knockout.js knockout-validation

我想问一下,我可以将敲除验证添加到整个模型,而不是每个属性。我使用以下代码创建了一个视图模型:

    var UserViewModel = function() {
        return @Html.Raw(Json.Encode(Model.UserViewModel));
    };

   var entry = ko.mapping.fromJS(new UserViewModel());

现在,我可以通过添加验证规则来扩展此视图模型吗?例如:

entry.extend('propertyName', rules...)

1 个答案:

答案 0 :(得分:1)

您可以使用映射插件为您创建像

一样的可观察对象
var UserViewModel = function(data) {
        ko.mapping(data, {}, this);
};

然后您可以动态创建验证,如

function addValidation(vm) {
   for(var index in vm) {
      var member = vm[index];
       if(ko.isObservable(member) && !ko.isComputed(member)) {
           member.extend({ required: true });

           if(typeof member() === "number") {
               member.extend({ number: true });
           }
       }
   }
};

http://jsfiddle.net/CfKmw/1/