【问题标题】:Creating total cost function in Knockout shopping cart在 Knockout 购物车中创建总成本函数
【发布时间】:2015-02-01 21:25:44
【问题描述】:

我是 js 淘汰赛的新手,我的任务是向购物车添加功能。我已经为购物车中商品的总成本创建了一个函数,但它不起作用(代码在下面突出显示)。

我的问题是:如何更改此功能,或创建一个新功能,以输出购物车中商品的总成本,并且如果删除商品或更改商品数量,该功能会发生变化?

这是购物车的代码和简要说明:

http://jsfiddle.net/b4atrw2g/5/

购物车有两个主要部分。在“添加新商品”部分,用户输入商品的名称、成本和数量,然后点击“添加商品”。

该商品随后会显示在“购物车中的商品”部分,其中包含成本和数量。当商品在购物车中时,用户仍然可以更改商品的数量。

我创建了一个名为“getTotalCost”的函数,但它会在商品添加到购物车之前输出商品的总成本,并在商品添加到购物车后消失。

函数如下:

viewModel.getTotalCost = ko.pureComputed(function()

  {
    var total = 0;
    total += viewModel.newItemPrice() * viewModel.newItemQuantity();
    return total;
  },

  viewModel);

提前谢谢你。

【问题讨论】:

  • 确保包含重现您提出的问题in您的问题所必需的所有内容。
  • 感谢您的提示,@J0e3gan。我花了很长时间试图提出这个问题,但它本来可以更清楚。

标签: javascript knockout.js


【解决方案1】:
viewModel.getTotalCost = ko.pureComputed(function() 
{
    var total = 0;
    arr = viewModel.itemsInCart();
    for (i = 0; i< arr.length;i++)
       total += arr[i].price * arr[i].quantity;
    return total; 
}

http://jsfiddle.net/b4atrw2g/6/

【讨论】:

  • 感谢@IAfanasov,这很好,但如果购物车中的数量发生变化,我仍然需要更改总数。这是一种方法吗?
  • 太晚了,我没有注意匹配,抱歉(= 我认为您需要制作包含 observables 的 observableArray。
  • 没问题,这很有帮助,@IAfanasov。我想我有一个可观察的数组,在这里: itemsInCart: ko.observableArray([])
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-19
  • 2017-03-30
  • 2014-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-12
相关资源
最近更新 更多