Cuando se usa knockout, ¿cuál es la ventaja de usar observables calculados de solo lectura en lugar de funciones simples?Knockout: calculado observable frente a la función
tomar las siguientes constructor y de fragmentos de HTML modelo de vista, por ejemplo:
var ViewModel = function(){
var self = this;
self.someProperty = ko.observable("abc");
self.anotherProperty = ko.observable("xyz");
self.someComputedProperty = function(){
return self.someProperty() + self.anotherProperty();
};
};
<input data-bind="value: someProperty"/>
<input data-bind="value: anotherProperty"/>
<p data-bind="text: someComputedProperty()"></p>
Todo aquí parece funcionar como era de esperar, por lo que hay una razón por la que debe utilizar en su lugar:
var ViewModel = function(){
var self = this;
self.someProperty = ko.observable("abc");
self.anotherProperty = ko.observable("xyz");
self.someComputedProperty = ko.computed(function(){
return self.someProperty() + self.anotherProperty();
});
};
<input data-bind="value: someProperty"/>
<input data-bind="value: anotherProperty"/>
<p data-bind="text: someComputedProperty"></p>
Noté que la documentación en http://knockoutjs.com/documentation/computedObservables.html indica que "... las encuadernaciones declarativas se implementan simplemente como observables calculados", ¿significa que tengo que usarlas explícitamente en mis viewmodels?
Gran respuesta: gracias! – Duncan
Buena respuesta. A veces uso una función en lugar de una calculada cuando QUIERO que se ejecute la lógica completa cada vez. –
¿cómo sabe que un observable calculado depende de otro observable, cuando todo lo que pasé fue una función? ¿Analiza esa función? - Es hora de leer el código fuente del knockout supongo – zod