Ответ 1
Вот скрипка, демонстрирующая увеличение:
http://jsfiddle.net/jearles/LbPDK/
Как вы можете видеть, self.num(self.num() + 1);
работает.
Я нахожу это странное место, чтобы немного погубить, но если я не могу это сделать:
koObserv(koObserv() + 1);
и метод не предоставляется, я вынужден сделать:
koObserv = ko.observable(koObserv() + 1)
Это кажется действительно неуклюжим.. есть ли другой способ, который мне не хватает?
Вот скрипка, демонстрирующая увеличение:
http://jsfiddle.net/jearles/LbPDK/
Как вы можете видеть, self.num(self.num() + 1);
работает.
вы могли бы абстрагировать эту логику в расширяемую наблюдаемую
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
Я бы предложил вам, если вы используете много прироста, создайте вспомогательную функцию для выполнения приращения и передайте ей ссылку на ваш наблюдаемый. Вы получите более читаемый код.
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)">