【问题标题】:Issue With Angular Methamatical Expression角度数学表达式的问题
【发布时间】:2015-09-14 12:04:30
【问题描述】:

我在 angularjs 中遇到了算术表达式问题

{{ (item.Price + (item.Price * item.Discount))/100 }}

我希望它计算产品的总价格,包括它的折扣。

例如:

价格:200 折扣:2%

结果应该是 204。但它显示的是 2004。我不知道为什么它与第一个价格相加成字符串...

任何猜测...

【问题讨论】:

  • 加到价格中的折扣是什么?只是说'
  • 我想显示折扣之前的实际价格...
  • 尝试转换为数字 - 请参阅 stackoverflow.com/questions/32478738/…。答案的 cmets 在特定情况下有效/无效。
  • 这不是打折吗?从实际价格中减去? =)
  • 您不能在控制器中执行此操作并在此之后返回价格吗?

标签: javascript jquery angularjs


【解决方案1】:

根据您的评论更新。

只要这样做:

<p ng-repeat='obj in arr'>{{ item.priceb4disc(obj.price, obj.disc) }}</p>

您可以在控制器中计算所有折扣和价格,并将结果设置为$scope.item.priceb4disc并在dom中显示:

  $scope.arr = [{"price":200, "disc":2},{"price":500, "disc":10}];
  $scope.item = {};
  $scope.item.priceb4disc = function(price, disc) {
     return (price + (price * disc/100));
  };

我仍然觉得你不需要最后一个 /100: plnkr demo.

【讨论】:

  • 但我在 ng-repeat 中做这些事情我认为这不适用于多种产品
  • @KailashChandra 哦!那么你应该添加所有这些要求和一个示例演示来使用。虽然您可以使用我创建的 plnkr 并且可以根据您的要求对其进行更新吗?
  • &lt;span ng-bind="function(Item.price, Item.discount)"&gt;&lt;/span&gt; 而不是插值。
  • 感谢@skubski 将其与函数绑定... :)
【解决方案2】:

您可以在控制器中执行此操作(CoffeeScript 中的 sn-p)

for item in items
   item.calculatedPrice = item.price + (item.price * item.discount / 100)

然后在您的 html 标记中,您可以在 ng-repeat{{item.calculated_price}} 中使用。

【讨论】:

    【解决方案3】:

    试试这个:

      {{((item.Price | number) + (item.Price * item.Discount) | number) /100}}
    

    也许你的计算会给出分数结果!
    分别跟踪它们以给出最后的结果!

    正如@VVK 所说: 如果您有问题,您可以创建 parseInt 过滤器示例:angular float number fraction down

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-06
      • 1970-01-01
      • 2014-06-02
      • 1970-01-01
      相关资源
      最近更新 更多