If you've used knockout.js then you are familiar with the knockout.mapping plugin for creating viewmodels. As awesome as knockout is, the mapping plugin is what made it really practical to use. Unfortunately as I've tried to knockout in business applications I've found the mapping plugin had a few problems:
- It was slow on large view models, particularly in older browsers(IE7/8) and on large arrays.
- Creating viewmodels wasn't a one step process... after calling mapping you'd then have to extend the viewmodel further.
- It provided no easy way to organize the viewmodel creation code which becomes a problem on larger viewmodels.
- It didn't allow much customization in how the viewmodel was created and what customization there was was confusing and not intuitive to use.
And in closing... Merry Christmas everyone! We just crossed into Christmas day here so consider this an early Christmas gift... it's nice to finally give something back to the community.

