Pracuję nad przykładem wtyczki mapowania w witrynie Knockoutjs.Dodawanie właściwości do modelu widoku utworzonego za pomocą wtyczki mapowania JS Knockout
To są dane przykładowe.
var data = {
name: 'Scott',
children: [
{ id : 1, name : 'Alice' }
]
}
Przykład pokazuje, jak zastąpić mapowanie dla jednego z dzieci, ale w jaki sposób mogę zmienić mapowanie dla obiektu bazowego.
Jeśli na przykład chciałem dodać do Scott'a właściwość "FavouriteChild", jak bym to zrobił?
Zakładam, że muszę użyć funkcji tworzenia na mapowaniu bazy, ale nie mogę znaleźć przykładu składni w dowolnym miejscu.
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: z przyjętych odpowiedź poniżej znalazłem to zadziałało
<span data-bind='text: AdditionalProperty'>
Kod nokaut
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);
Jak o wyjaśnienia w jaki sposób, że tworzą z pustym funkcji pokazuje nic o dostępie do korzeni poziom i dodawanie do niego. –
zaktualizowała funkcję, aby pokazać, jak można odwzorować i zmanipulować wynik przed zwróceniem go. –
Wiem, że jest to bardzo stare pytanie, ale właśnie je spotkałem. Chciałem złożyć sugestię. Przykład kodu do użycia wywołania zwrotnego create podczas mapowania (w witrynie KnockoutJs) nie wyjaśnia, że metoda create znajduje się w obiekcie odwzorowania. Ryan, jeśli możesz, poprosiłbym właściciela witryny, aby zastąpił próbkę kodu twoją próbką powyżej. –