C'è un modo per richiamare una volta un metodo su un valore modificato? Ho creato wrapper per bindingHandlers.value che invocare questo metodo:Richiamare il metodo personalizzato sul valore modificato
var update = bindingHandlers.value.update;
bindingHandlers.value.update = function(element, valueAccessor, allBindingAccessor, viewModel) {
var newValue = ko.utils.unwrapObservable(valueAccessor());
var elementValue = ko.selectExtensions.readValue(element);
var valueHasChanged = (newValue != elementValue);
update(element, valueAccessor, allBindingAccessor, viewModel);
if (valueHasChanged) {
myMethod();
}
}
Purtroppo quando cambio un valore myMethod viene chiamato due volte becuase venire dependencyObservable è anche cambiato. Qualche idea?
I avere un calcolatore di leasing che ha bisogno di oggetti con circa 20 proprietà e vorrei passare il mio viewModel a questa calcolatrice come parametro, quindi mi piacerebbe iscrivermi alla maggior parte delle proprietà. –
Puoi sempre iterare le proprietà e ognuna che è una chiamata 'observable' o' observableArray' 'subscribe' on (il modo semplice potrebbe essere semplicemente testare se ogni proprietà ha una funzione' subscribe') –
Aggiornato la mia risposta con un metodo 'subscribeAll', si noti che non crea grafici profondi, solo quelli poco profondi. –