我正在使用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中缺少某些东西?
答案 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);
}
}
});
}