Как вы увеличиваете наблюдаемый нокаут .js? - программирование
Подтвердить что ты не робот

Как вы увеличиваете наблюдаемый нокаут .js?

Я нахожу это странное место, чтобы немного погубить, но если я не могу это сделать:

koObserv(koObserv() + 1);

и метод не предоставляется, я вынужден сделать:

koObserv = ko.observable(koObserv() + 1)

Это кажется действительно неуклюжим.. есть ли другой способ, который мне не хватает?

4b9b3361

Ответ 1

Вот скрипка, демонстрирующая увеличение:

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

Как вы можете видеть, self.num(self.num() + 1); работает.

Ответ 2

вы могли бы абстрагировать эту логику в расширяемую наблюдаемую

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

Ответ 3

Я бы предложил вам, если вы используете много прироста, создайте вспомогательную функцию для выполнения приращения и передайте ей ссылку на ваш наблюдаемый. Вы получите более читаемый код.

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)">

Пример JSFiddle