У меня есть родительская-структура объекта дочерней модели представления, и мне нужно обновить наблюдаемую на родительском объекте. от ребенка. Я в основном придумал два шаблона для этого:
1) Передать ссылку на родительское свойство дочернему и обновить свойство внутри дочернего:
var ParentViewModel = function(){
var self = this;
this.selectedItem = ko.observable();
this.child = ko.observable(new ChildViewModel(self.selectedItem));
}
var ChildViewModel = function(parentSelectedItem){
var self = this;
this.id = ko.observable();
this.parentSelectedItem = parentSelectedItem;
this.select = function(){
self.parentSelectedItem(self);
}
}
2] Создать дочерний метод select для родителя и ссылки родитель, наблюдаемый локально:
var ParentViewModel = function(){
var self = this;
this.selectedItem = ko.observable();
var child = new ChildViewModel();
child.select = function(){
self.selectedItem(child);
}
this.child = ko.observable(child);
}
var ChildViewModel = function(){
this.id = ko.observable();
}
Ни один из этих паттернов не приводит меня в восторг. Первый помещает всю ссылку на свойство в дочерние модели представления, второй определяет дочернюю функцию за пределами дочерней области.
Есть ли у кого-нибудь другие предложения по шаблону того, как эта операция может быть выполнена в javascript чистым и проверяемым образом? Или я более или менее застрял только с этими двумя вариантами?