我这一发现一个奇怪的地方是在一个小的损失,但如果我不能”做这样的:你如何增加knockout.js的可观察性?
koObserv(koObserv() + 1);
,而不是提供了一种方法,我是被迫做:
koObserv = ko.observable(koObserv() + 1)
这看起来真的很笨拙..有没有另一种方法,我错过了?
我这一发现一个奇怪的地方是在一个小的损失,但如果我不能”做这样的:你如何增加knockout.js的可观察性?
koObserv(koObserv() + 1);
,而不是提供了一种方法,我是被迫做:
koObserv = ko.observable(koObserv() + 1)
这看起来真的很笨拙..有没有另一种方法,我错过了?
我建议你,如果你使用大量的增量,创建一些帮助函数来做增量并将其传递给可观测值的引用。你最终得到更可读的代码。
JS:
var increment = function (observable) {
observable(observable() + 1);
};
var MyViewModel = function() {
this.num1 = ko.observable(0);
this.incrementNum = function (observable) {
// passing the observable by reference to the helper function
increment(observable);
}
}
HTML:
<button data-bind="click: incrementNum.bind($root, num1)">
您也可以将函数添加到['ko.observable.fn'](http://knockoutjs.com/documentation/fn.html) – 2015-07-20 14:29:21
你可以抽象这些逻辑为延长观察的
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
你可以做'koObserv(koObserv()+ 1);'。你可以分享你的代码不工作?这可能会导致问题的唯一地方,就是它是否在计算的可观察值中,从而导致递归重新评估。 – 2012-03-03 19:05:15