javascript - If I'm adding a subobject to a mapped knockout viewmodel, how do I call ko.mapping on that? -


i have mission() object has observablearray parts of part()s objects:

    function mission(mission) {         komapping.fromjs(mission, {             'parts': {                 create: function(options) {                     return new part(options.data);                 }             }         }, this);          /* parts */         this.parts = ko.observablearray([]);     }      function part(part) {         komapping.fromjs(part, {             include: ['a bunch of properties']         }, this);         var p = this;          // computed properties , such here     } 

my mission() object stored self.mission = ko.observable(new mission()) on global viewmodel.

i have addpart function need help:

addpart = function() {     // how push new part() object parts array on mission here? } 

what i'd know how, using knockout's mapping plugin, add new part each mission, preferably automatically little manual configuration. right now, i've tried bunch of things did not work or did not pull across correct properties. not work:

addpart = function(parttoadd) {     self.mission().parts.push(new part(parttoadd)); }  addpart = function() {     komapping.tojs(parttoadd, {}, self.mission); }  addpart = function() {     komapping.tojs(parttoadd, {}, self.mission().parts); } 

so how meant , have map automatically?

addendum: it's worth noting i'm using komapping instead of ko.mapping here because i've employed requirejs...

you can this:

addpart = function(parttoadd) {     self.mission().parts(ko.utils.arraymap(parttoadd, function (part) {         return new part(part);     }); } 

Comments