你怎么增加knockout.js可观察?

Jer*_*ith 18 javascript knockout.js

我发现这个地方有点茫然,但如果我不能这样做:

koObserv(koObserv() + 1);
Run Code Online (Sandbox Code Playgroud)

我没有提供方法,我被迫做了:

koObserv = ko.observable(koObserv() + 1)
Run Code Online (Sandbox Code Playgroud)

这看起来很笨拙..还有另外一种方法,我错过了吗?

Joh*_*les 31

这是一个演示递增的小提琴:

http://jsfiddle.net/jearles/LbPDK/

你可以看到self.num(self.num() + 1);确实有效.


Moe*_*oes 9

你可以将这些逻辑抽象为一个可观察的扩展

ko.observable.fn.increment = function (value) {
    this(this() + (value || 1));
};

var counter = ko.observable(0);
console.log(counter()); // 0

counter.increment();
console.log(counter()); // 1

counter.increment();
console.log(counter()); // 2

counter.increment(5);
console.log(counter()); // 7
Run Code Online (Sandbox Code Playgroud)