Рендеринг Json из ViewModel и наоборот
Я новичок в нокауте JS, у меня есть требование, подобное этому jsfiddle http://jsfiddle.net/daedalus28/vpjhZ/, это было здорово в рендеринге JSON из ViewModel, но я не смог сделать наоборот, учитывая JSON из серверу нужно отрендерить тот же вид. Как я могу отобразить Observablearray в функции создания отображения?
var FilterGroup = function(parent) {
this.join = ko.observable('All');
this.filters = ko.observableArray([new Filter(this)]);
this.addFilter = function() {
var filter = new Filter(this);
this.filters.push(filter);
this.filters.valueHasMutated();
};
this.addGroup = function() {
var group = new FilterGroup(this);
this.filters.push(group);
this.filters.valueHasMutated();
};
this.remove = (function(parent) {
return function() {
parent.filters.remove(this);
}
})(parent);
this.isRoot = (function(parent) {
return function() {
return parent ? false : true;
}
})(parent);
var mappingOptions = {
filters: {
create: function(args) {
return new function () {
filters = ko.observableArray([new Filter(args.data)]);
};
}
}
};
ko.mapping.fromJS(parent, mappingOptions, this);
};
var data = {filters:{join:'All',filters:[{field:{name:'IsDeleted',label:'Deleted'},modifier:'contains',criteria:'50'},{join:'All',filters:[{field:{name:'IsDeleted',label:'Deleted'},modifier:'equals',criteria:'20'}]},{field:{name:'Email',label:'Email'},modifier:'equals',criteria:'30'}]}};
var viewModel = {
filters: new FilterGroup(data.filters),
options: {
joins: ['All', 'Any'],
modifiers: [
'equals',
'not equal to',
'less than',
'greater than',
'contains',
'does not contain',
'starts with'
],
fields: [{"name":"Id","label":"ContactID"},{"name":"IsDeleted","label":"Deleted"}],
},
toJSON: function() {
return {
filters: this.filters
}
}
};
$(function() {
ko.applyBindings(viewModel);
})
;
1 ответ
Решение
Я не уверен, что правильно понимаю, но вы хотите визуализировать строку JSON из вашей ViewModel? Если это так, вам придется сделать что-то вроде этого:
var result = JSON.stringify(unwrapObservable(myViewModel));
или с плагином сопоставления