计算属性连接两个值而不是添加

时间:2013-10-03 09:17:37

标签: knockout.js

我正在使用knockoutjs的计算属性。这是我的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表示没问题但是当我更改文本框中的任何值时,它会连接值而不是显示它们的添加。在添加属性时我是否需要使用parseInt js或者我在knockout.js中缺少某些东西?

这里是jsfiddle link

1 个答案:

答案 0 :(得分:2)

  

是不是可以将其作为数字进行观察,以便它们始终可以   用于数字操作?

你可以扩展observable,如

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/