Шаблон для изменения наблюдаемого объекта родительской модели представления из дочерней

У меня есть родительская-структура объекта дочерней модели представления, и мне нужно обновить наблюдаемую на родительском объекте. от ребенка. Я в основном придумал два шаблона для этого:

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 чистым и проверяемым образом? Или я более или менее застрял только с этими двумя вариантами?

14
задан KodeKreachor 4 April 2012 в 04:41
поделиться