Knockout.js计算

时间:2013-03-13 17:39:20

标签: javascript html knockout.js

我正在使用Knockout.js来开发计算器。我正面临一种我不知道如何处理的情况。 在下面的示例中,当用户输入产品和值并且值保存在DB中时,一切正常。但是当用户来编辑此页面时,我的要求是显示用户输入的所有值以及总计。但是,当用户更改产品或数量中的某些内容时,总数应按预期更改。

我们现在将总数存储在数据库中,并且总数可以由某些管理员用户更改。在这种情况下,当用户进入编辑页面但是当用户更改产品或数量时,我们是否可以覆盖计算值,然后计算应该与产品和数量的最新值一起发生。

非常感谢帮助。

var TsFoundationDeviceModel = function(product,qty) {
var self = this;
self.product = ko.observable();
self.quantity= ko.observable();
self.computedExample = ko.computed(function() {
   return self.product() * self.quantity() ;
});}

我的HTML代码看起来像

<input name="product" data-bind="value:product">
<input name="value" data-bind="value:value">
<input name="total" data-bind="value:computedExample"/>

2 个答案:

答案 0 :(得分:0)

您必须将视图绑定到屏幕。看看这个小提琴并给它

 var TsFoundationDeviceModel = function(product,qty) {
var self = this;
self.product = ko.observable(product);
self.quantity= ko.observable(qty);
self.computedExample = ko.computed(function() {
 return self.product() * self.quantity() ;
});}

ko.applyBindings(new TsFoundationDeviceModel(2,3));

http://jsfiddle.net/Z6VPV/5/

答案 1 :(得分:0)

当您在计算中引用observable时,您需要将它们视为函数,因此您将使用return self.product * self.quantity ;而不是return self.product() * self.quantity();

小提琴:http://jsfiddle.net/SAV9A/