Ho una struttura di struttura del modello di visualizzazione padre-figlio e devo aggiornare un osservabile sul genitore dal bambino. Sono fondamentalmente venuta in mente due modelli per farlo:Schema per la modifica del knockout osservabile sul genitore dal modello di vista figlio
1] passare un riferimento della proprietà genitore al bambino e aggiornare la proprietà all'interno del bambino:
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] Creare il figlio di selezionare il metodo sul genitore e fare riferimento al genitore osservabile 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();
}
Nessuno di questi motivi mi fa perdere la testa. Il primo spinge l'intero riferimento di proprietà in modelli di vista figli, il secondo definisce la funzione di un bambino al di fuori dell'ambito del bambino.
Qualcuno ha altri suggerimenti di modello su come questa operazione potrebbe essere raggiunta in javascript in modo pulito e testabile? O sono più o meno bloccato con solo queste due opzioni?
Grazie Ryan, apprezzo la risposta ben ponderata. – KodeKreachor
Ho bisogno di un pulsante +2 per questa risposta – KodeKreachor
Lo farò anche per te :-) Modo molto pulito per farlo. Inoltre, esci spesso dal modello di vista del bambino che le persone vogliono in realtà è solo un altro modello (sono solo dati puri). A volte è più facile pensarla così, qualunque cosa li chiamiamo –