计算Angular JS的销售价格

时间:2015-06-06 16:55:15

标签: javascript jquery html angularjs math

所以我有一个简单的表格,提供产品成本,加价和最终销售价格。

但是,angularjs没有为我提供的内容返回正确的值。

请考虑以下事项:

I have a product that costs me $50.00 to get in my store.

To make a profit, I mark this product up 30% or .30.

So my final sale price to my customers would be $65.00

为了解决这个问题,我们使用如下的简单数学计算:

Item Cost + (Item Cost x Markup Percentage) = Price 

$50.00 + ($50.00 x .30) = $65.00

所以在我的HTML中我有一个简单的表单

<form>
  <input type="text" ng-model="pr.cost" class="form-control" placeholder="Cost" />
  <input type="text" ng-model="pr.markup" class="form-control" placeholder="Markup %" />
  <input type="text" class="form-control" placeholder="{{pr.type}} Sale" value="{{pr.cost+(pr.cost*pr.markup)|currency}}" readonly/>
</form>

当我在上面输入的数字输入此表格时,我得到以下结果:

Cost: $50
Markup: .30
Sale Price: $5,015.00

这是30%的加价!世界上我在这里做错了什么?

对于喜欢小提琴的人,我在这里创建一个JSFiddle:  http://jsfiddle.net/p20roLLu/

2 个答案:

答案 0 :(得分:1)

这是因为JavaScript将explicit operator double () { return getMag(); } 作为字符串。它会看到pr.cost并自动转换为整数类型,但pr.cost将其抛弃,因此它会添加(pr.cost*pr.markup)并返回"50"+"15"。这可以通过强制JavaScript将"5015"解释为整数来解决,这是一种乘以或除以1的简单方法:

pr.cost

这不是一个完美或干净的解决方案,但它至少会起作用。

答案 1 :(得分:0)

看起来问题是+。在你得到的那一刻:

50 + (50*.3) = 50+15 -> 5015 -> $5,015

尽可能

value="{{pr.cost*1+(pr.cost*pr.markup)|currency}}"

对于clenear版本,您应该使用parseInt()

How can I parse String to Int in an Angular expression?