Я работаю над примером плагина сопоставления на веб-сайте Knockoutjs.
Это пример данных.
Плагин для новичков JS Mapping
var data = {
name: 'Scott',
children: [
{ id : 1, name : 'Alice' }
]
}
В этом примере показано, как переопределить отображение для одного из дочерних элементов, но как изменить сопоставление для базового объекта.
Если, например, я хотел добавить свойство "FavouriteChild" Скотту, как бы я это сделал?
Я предполагаю, что мне нужно использовать функцию create в базовом сопоставлении, но я не могу найти пример синтаксиса где-нибудь.
var myChildModel = function(data) {
ko.mapping.fromJS(data, {}, this);
this.nameLength = ko.computed(function() {
return this.name().length;
}, this);
}
var mapping = {
'children': {
create: function(options) {
return new myChildModel(options.data);
}
}
}
var viewModel = ko.mapping.fromJS(data, mapping);
EDIT: Из принятого ниже ответа я нашел, что это работает
<span data-bind='text: AdditionalProperty'>
Код нокаута
var mapping = {
create: function (options) {
//customize at the root level.
var innerModel = ko.mapping.fromJS(options.data);
innerModel.AdditionalProperty = 'Hello World';
return innerModel;
}
}
var viewModel = ko.mapping.fromJS(data, mapping);
//use this as our model bindings
ko.applyBindings(viewModel);