mardok
mardok

Reputation: 2415

Knockout Validation on existing view model

I would like to ask you can I add knockout validation to a whole model, not to each property. I create a view model using this code:

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

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

Now, can I extend this view model by adding validation rules ? For example:

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

Upvotes: 0

Views: 274

Answers (1)

Anders
Anders

Reputation: 17564

You can use the mapping plugin to create observables for you like

var UserViewModel = function(data) {
        ko.mapping(data, {}, this);
};

Then you can create validation dynamicly like

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/

Upvotes: 1

Related Questions