1

ノックアウトjsの計算されたプロパティを使用しています。これが私のViewModel

function AppViewModel() {
    var self = this; 
    self.firstValue = ko.observable(6);
    self.secondValue = ko.observable(5);
    self.addValue = ko.computed(function() {
        return self.firstValue() + self.secondValue();
    });
}

// Activates knockout.js
ko.applyBindings(new AppViewModel()); 

私のhtmlバインディングは次のとおりです:

<p><input data-bind="value: firstValue"></p>

<p><input data-bind="value: secondValue"></p>

<p><input data-bind="value: addValue"></p>

私が直面している問題は、初めて 11 を示していますが、テキスト ボックスの値を変更すると、値の追加を表示するのではなく、値を連結します。プロパティを追加するときにjsを使用する必要がありますparseIntか、それともknockout.jsに何か不足していますか?

ここにjsfiddleリンクがあります

4

1 に答える 1

2

数値操作に常に使用できるように、数値として観測可能にすることはできませんか?

オブザーバブルを次のように拡張できます

ko.extenders.number = function(observable, opt) {
   return ko.computed({
       read: observable,
       write: function(value) {
           if(typeof value !== "number") {
               value = parseFloat(value);
           }           

           if(!isNaN(value)) {
               observable(value);
           }           
       }
   });
}

編集: http://jsfiddle.net/Rv7EP/

于 2013-10-03T09:30:19.213 に答える