KnockoutJS tiene el concepto de observables calculados, que son funciones que dependen de uno o más observables. Knockout es capaz de determine the dependencies of a computed observable as described in the docs:KnockoutJS - Cómo funcionan los observables calculados con sentencias condicionales
Cuando se declara un KO invoca inmediatamente su función observable, evaluador computarizada para obtener su valor inicial. Mientras su función de evaluador se está ejecutando, KO mantiene un registro de los observables (o observables observables) que su evaluador lee el valor de.
Ahora, lo que no entiendo es cómo funciona esto si su observable calculado contiene lógica condicional. Si Knockout invoca la función del evaluador, seguramente la lógica condicional podría dar como resultado observables cuya función depende de que no se invoque.
he creado este violín a prueba:
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);
};
Sin embargo, de alguna manera Knockout identificó correctamente la dependencia a la vez firstName
y lastName
.
¿Alguien puede explicar cómo?
No puedo entender la pregunta, creo que los observables calculados determinan el estado en tiempo de ejecución evaluando todas las dependencias, por lo que todo parece claro y directo, lo siento pero no puedo obtener un punto principal de su pregunta – sll
Buena pregunta.Siempre pensé que el enfoque que describen en el manual, tal como lo citó, fue bastante inteligente, pero ahora que usted señala esto, me pregunto si es muy inteligente y no solo bastante inteligente ...: D –