Mam skonfigurowaną strukturę obiektu modelu nadrzędnego podrzędnego i trzeba zaktualizować obserwowalny obiekt nadrzędny z podrzędnego. Ja po prostu pochodzić z dwóch wzorów za to:Wzorzec do modyfikowania nokautu obserwowalnego na obiekcie nadrzędnym z modelu widoku podrzędnego
1] Przepuścić odniesienie nieruchomości macierzystej dla dziecka i zaktualizuj właściwość z poziomu dziecka:
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] Tworzenie dziecka wybierz metodę na obiekcie nadrzędnym i odniesienie do obiektu macierzystego obserwowalnego lokalnie:
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();
}
Żaden z tych wzorów nie wysyła mi po piętach. Pierwszy przesuwa cały odnośnik właściwości do modeli widoku dzieci, drugi definiuje funkcję dziecka poza zakresem funkcji podrzędnej.
Czy ktoś ma jakieś sugestie dotyczące schematu, w jaki sposób można uzyskać tę operację w javascript w czysty i sprawdzalny sposób? Czy mniej lub bardziej utknąłem z tymi dwoma opcjami?
Dzięki Ryan, doceniam dobrze przemyślaną odpowiedź. – KodeKreachor
Potrzebuję przycisku +2 do tej odpowiedzi. – KodeKreachor
Będę go również dla ciebie :-) Bardzo czysty sposób to zrobić. Ponadto, często rezygnuje z modelu widoku podrzędnego, który ludzie chcą, to naprawdę tylko inny model (to tylko czyste dane). Czasami łatwiej jest o nim myśleć w ten sposób, niezależnie od tego, jak je nazywamy. –