Javascript Knockout.js

Javascript Knockout.js,javascript,html,knockout.js,Javascript,Html,Knockout.js,我正在使用Knockout.js开发一个计算器。我正面临一个我不知道如何处理的局面。 在下面的示例中,当用户输入产品和值并将值保存在数据库中时,一切正常。但是当用户来编辑此页面时,我的要求是显示用户输入的所有值以及总数。但当用户改变产品或数量时,总数应按预期变化 我们现在将总数存储在DB中,并且一些管理员用户可以更改总数。在这种情况下,当用户转到编辑页面时,是否有一种方法可以覆盖计算值,但当用户更改产品或数量时,则应使用产品和数量中的最新值进行计算 谢谢你的帮助 var TsFoundation

我正在使用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"/>

您必须将视图绑定到屏幕。看看这把小提琴,把它给我

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

当您在计算中引用可观测值时,您需要将其视为函数,而不是
返回self.product*self.quantity
您将使用
返回self.product()*self.quantity()


Fiddle:

加载编辑页面时,是否可以使用javascript或jQuery分配总数?然后,当您进行更改时,普通的AppViewModel()将根据需要更新总数?但我的模型将包含一个值数组,可能是20。使用脚本会很困难。您找到解决方案了吗?我也遇到了同样的问题。有没有一种方法可以直接从数据库中显示计算值。有时候,第三方的计算值会在数据库中发生变化。您必须设置一个重新出现的ajax调用来刷新对象。有没有一种方法可以用从数据库中获得的值覆盖计算值DB.Oops.代码现在已编辑。但在本例中,我希望在用户进入编辑页面时显示来自数据库的数据。有时,第三方API会更改数据库中的总数据。您需要编写一个ajax调用,以从数据库中获取数据,并将该值存储在可观测数据中。如果您的代码中存在数据可能过时的点(通过api在db中更改),您将使用用于获取要初始化的值的相同ajax方法刷新数据。是否有一种方法可以使用从db获得的值覆盖计算值。