knockout.js - started - knockoutjs fadevisible
Incrementa un knockoutJS observable de una buena manera expresiva (1)
¿Existe una forma compacta de incrementar un observable KnockoutJS de una manera altamente expresiva para que el código gane en legibilidad?
Me gustaría evitar esta sintaxis:
var counter = ko.observable(0);
// increment the counter as we know today
counter(counter() + 1);
En cambio, me gustaría una sintaxis más expresiva como:
counter.increment();
Este tipo de API también debería aceptar un argumento para definir el valor del incremento:
counter.increment(10);
counter.increment(-1);
No encontré nada como esto en la documentación oficial y otras preguntas similares aquí informan solo la sintaxis estándar que en mi opinión es extremadamente difícil de leer.
Puede extender el observable individual para apoyar el incremento o aplicarlo a todos los observables.
// for individual
ko.extenders[''incrementable''] = function (target, enabled) {
if (enabled) {
target.increment = function (incValue) {
this(this() + (incValue || 1));
}.bind(target);
}
return target;
};
var counter = ko.observable(0).extend({ incrementable: true });
counter.increment();
// or for all
ko.observable.fn.increment = function (incValue) {
this(this() + (incValue || 1));
};