以一种良好的表达方式增加一个 KnockoutJS observable
Increment a KnockoutJS observable in an good expressive way
是否有一种紧凑的方法可以以高表达方式增加 KnockoutJS 可观察值,从而提高代码的可读性?
我想避免这种语法:
var counter = ko.observable(0);
// increment the counter as we know today
counter(counter() + 1);
相反,我想要一个更具表现力的语法,例如:
counter.increment();
这种API也应该接受一个参数来定义增量的值:
counter.increment(10);
counter.increment(-1);
我在官方文档中没有找到类似的内容,此处的其他类似问题仅报告标准语法,我认为这非常难以阅读。
您可以扩展单个 observable 以支持递增或将其应用于所有 observable。
// 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));
};
是否有一种紧凑的方法可以以高表达方式增加 KnockoutJS 可观察值,从而提高代码的可读性?
我想避免这种语法:
var counter = ko.observable(0);
// increment the counter as we know today
counter(counter() + 1);
相反,我想要一个更具表现力的语法,例如:
counter.increment();
这种API也应该接受一个参数来定义增量的值:
counter.increment(10);
counter.increment(-1);
我在官方文档中没有找到类似的内容,此处的其他类似问题仅报告标准语法,我认为这非常难以阅读。
您可以扩展单个 observable 以支持递增或将其应用于所有 observable。
// 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));
};