Tengo una estructura de objeto de modelo de vista padre-hijo configurada y necesito actualizar un elemento observable en el elemento primario del elemento secundario. básicamente me he llegado con dos patrones para hacerlo:Patrón para modificar el knockout observable en el modelo principal de vista desde el niño
1] pasa una referencia de la propiedad de los padres para el niño y actualizar la propiedad desde el interior del niño:
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] Crear el niño de seleccione el método en el padre y haga referencia al padre observable localmente:
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();
}
Ninguno de estos patrones me envía a los talones. El primero introduce toda la referencia de propiedad en modelos de vista de niños, el segundo define la función de un niño fuera del alcance del niño.
¿Alguien tiene alguna sugerencia de patrón sobre cómo se puede lograr esta operación en JavaScript de una manera limpia y comprobable? ¿O estoy más o menos atrapado con solo estas dos opciones?
Gracias Ryan, agradezco la respuesta bien pensada. – KodeKreachor
Necesito un botón +2 para esta respuesta – KodeKreachor
Lo añadiré para usted también :-) Manera muy limpia de hacer esto. Además, salga a menudo del modelo de vista infantil que la gente quiere es realmente solo otro modelo (es solo datos puros). A veces es más fácil pensarlo de esa manera, como sea que los llamemos –