Friday, 15 January 2010

knockout.js - Custom mapping the child array of objects and adding validation -



knockout.js - Custom mapping the child array of objects and adding validation -

a json string received server , trying custom map using ko mapping plugin, can add together validation using ko validation plugin.

there model object named player has property named trophies array of objects.

// business objects var myplayer = function (player) { this.id = ko.observable(player.id); this.name = ko.observable(player.name).extend({required: true}); this.rank = ko.observable(player.rank); this.trophies = ko.observablearray(player.trophies); } var mytrophy = function (trophy) { this.name = ko.observable(trophy.name).extend({required: true}); this.year = ko.observable(trophy.year).extend({required: true}); }

i don't know how phone call mytrophy can custom map trophies array along validation.

//ko binding var playermodel = ko.mapping.fromjson(jsonstring, mapping); ko.applybindings(playermodel); // mapping var mapping = { 'player': { create: function (options) { var _player = new myplayer(options.data); homecoming _player; } } }

here jsfiddle

if notice in jsfiddle, if remove name property validation message 'this required' validation message trophy name , year. allow me know if need more details. thanks

there several different ways accomplish this.

one approach utilize arraymap utility function phone call function each entry in player.trophies

this.trophies = ko.observablearray(ko.utils.arraymap(player.trophies, mytrophy));

then alter mytrophy homecoming object

var mytrophy = function (trophy) { homecoming { name: ko.observable(trophy.name).extend({required: true}), year: ko.observable(trophy.year).extend({required: true}) } }

knockout.js knockout-mapping-plugin knockout-validation

No comments:

Post a Comment