KnockoutJS ha il concetto di osservabili calcolati, che sono funzioni che dipendono da uno o più oggetti osservabili. Knockout è in grado di determine the dependencies of a computed observable as described in the docs:KnockoutJS - Come funzionano gli osservabili calcolati con istruzioni condizionali
Ogni volta che si dichiara una osservabile, KO invoca immediatamente la sua funzione di valutatore calcolata per ottenere il suo valore iniziale. Mentre la tua funzione di valutazione è in esecuzione, KO mantiene un registro di tutti gli osservabili (o gli osservabili calcolati da ) che il tuo valutatore legge il valore di.
Ora, ciò che non capisco è, come funziona se il tuo osservabile calcolato contiene una logica condizionale. Se Knockout richiama la funzione di valutazione, sicuramente la logica condizionale potrebbe risultare in osservabili che la funzione dipende dal fatto di non essere invocati?
Ho creato questo piano rispetto a prova:
var ViewModel = function(first, last) {
this.firstName = ko.observable(first);
this.lastName = ko.observable(last);
this.condition = ko.observable(false);
// at the point of evaluation of this computed observabled, 'condition'
// will be false, yet the dependecy to both firstName and lastName is
// identified
this.fullName = ko.computed(function() {
return this.condition() ? this.firstName() : this.lastName();
}, this);
};
Tuttavia, in qualche modo Knockout correttamente identificato la dipendenza sia firstName
e lastName
.
Qualcuno può spiegare come?
Impossibile ottenere la domanda, credo che gli osservabili calcolati determinino il proprio stato in fase di esecuzione valutando tutte le dipendenze, quindi tutto sembra chiaro e diretto, scusa ma non è possibile ottenere un punto principale della domanda – sll
Buona domanda.Ho sempre pensato che l'approccio che descrivono nel manuale, come hai citato, fosse abbastanza intelligente, ma ora che lo fai notare, mi chiedo se sia molto intelligente e non solo piuttosto intelligente ...: D –