w3schools started knockoutjs knockout getting fadevisible example book knockout.js increment observable

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)); };