Recursive mapping c/ flat properties
by Riderman Sousa
HTML
<script src="http://cloud.github.com/downloads/SteveSanderson/knockout/knockout-2.2.0.js"></script>
<script src="https://raw.github.com/SteveSanderson/knockout.mapping/master/build/output/knockout.mapping-latest.js"></script>
CoffeeScript
class @CheckListItem
constructor: (data) ->
@Id = data.Id
@Texto = data.Texto
@Dias = data.Dias
@Itens = data.Itens
mapping =
key: (data) -> ko.utils.unwrapObservable(data.Id)
create: (opts) ->
opts.data.Texto = opts.data.Template.Texto
opts.data.Dias = opts.data.Template.Dias
if opts.data.Itens
opts.data.Itens = ko.utils.arrayMap(opts.data.Itens, (it) -> ko.mapping.fromJS it, mapping)
new CheckListItem(opts.data)
serverData = '[{"Id":1,"Template":{"Texto":"Tarefa 1","Dias":1},"Itens":[{"Id":2,"Template":{"Texto":"Tarefa 2","Dias":3},"Itens":[]}]},{"Id":3,"Itens":[],"Template":{"Texto":"Tarefa 3","Dias":5}}]'
debugger
checkList = ko.mapping.fromJSON serverData, mapping
console.dir ko.mapping.toJS checkList