所以我有一个简单的表格,提供产品成本,加价和最终销售价格。
但是,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/
答案 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()
: