Используя Knockout.JS, я пытаюсь определить, как лучше всего расширять объекты в модели представления, когда они будут загружаться через подключаемый модуль сопоставления и динамически добавляться. В этом примере я добавляю метод addChild к объекту Person.
Расширение во время отображения:
var myPersonModel = function (data) {
ko.mapping.fromJS(data, {}, this);
this.addChild = function () {
this.children.push(new Child());
} .bind(this);
}
var mapping = {
'people': {
create: function (options) {
return new myPersonModel(options.data);
},
}
}
var viewModel = ko.mapping.fromJS(data, mapping);
Расширение во время динамического создания:
function Person(id, name, children) {
this.id = ko.observable(id);
this.name = ko.observable(name);
this.children = ko.observable(children);
this.addChild = function () {
this.Forms.push(new Child());
} .bind(this);
}
Но мне кажется, что должен быть более простой способ сделать это, чтобы мне не нужно было повторяться, и как сопоставленные, так и новые объекты получали метод addChild
.