我這一發現一個奇怪的地方是在一個小的損失,但如果我不能」做這樣的:你如何增加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