У меня есть структура объекта модели представления родительского и дочернего элементов, и вам нужно обновить наблюдаемый родительский элемент от дочернего элемента. Я в основном придумал два шаблона для этого:
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] Создайте дочерний метод выбора родителя и укажите локальный наблюдаемый локально:
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 в чистой и проверяемой форме? Или я более или менее застрял с этими двумя вариантами?