angular 模板的数学运算
Mathematical operation on angular template
每当我在视图模板中尝试类似的操作时,它都会按预期工作。
{{20*30}}
但每当我尝试
{{somevalue1*somevalue2}}
其中 somevalue1
和 somevalue2
都来自组件,而 somevalue2
来自 api 并且它在一个数组中,它显示的是 NaN。
如何处理?
是String值的原因吗?
如何在模板中转换为数字?
somevalue1
somevalue2
可能是字符串。不过,您需要共享更多代码才能获得真正的答案。
也将 {{somevalue1}}
和 {{somevalue2}}
添加到模板中,这样您就可以确保模板收到您期望的值。
Is it because of the String value?
是的,是的。你不能轻易访问模板范围内的 windows 范围,所以我会做一个方法:
calculateStuff(){
return Number(somevalue1) * Number(somevalue2);
}
在模板中:
{{calculateStuff()}}
如果字符串不是以代表数字的字符开头,它仍然是 return NaN。
问题是根据某些区域设置格式化的字符串值(在您的情况下是 US locale)
你可以八:
- 在数据检索时将字符串转换为值
- 创建angular 转换管道
- 在您的模板中使用助手 function/method
- 如果可以,请在服务器端调整数据(最好发送原始数据并在需要时对其进行格式化)
有几种处理转换的方法。如果这是您收到该号码的唯一格式。只需替换逗号 Number('1,234.42'.replace(',', ''))
或使用为此目的创建的一些库,如 NumeralJS
每当我在视图模板中尝试类似的操作时,它都会按预期工作。
{{20*30}}
但每当我尝试
{{somevalue1*somevalue2}}
其中 somevalue1
和 somevalue2
都来自组件,而 somevalue2
来自 api 并且它在一个数组中,它显示的是 NaN。
如何处理?
是String值的原因吗?
如何在模板中转换为数字?
somevalue1
somevalue2
可能是字符串。不过,您需要共享更多代码才能获得真正的答案。
也将 {{somevalue1}}
和 {{somevalue2}}
添加到模板中,这样您就可以确保模板收到您期望的值。
Is it because of the String value?
是的,是的。你不能轻易访问模板范围内的 windows 范围,所以我会做一个方法:
calculateStuff(){
return Number(somevalue1) * Number(somevalue2);
}
在模板中:
{{calculateStuff()}}
如果字符串不是以代表数字的字符开头,它仍然是 return NaN。
问题是根据某些区域设置格式化的字符串值(在您的情况下是 US locale)
你可以八:
- 在数据检索时将字符串转换为值
- 创建angular 转换管道
- 在您的模板中使用助手 function/method
- 如果可以,请在服务器端调整数据(最好发送原始数据并在需要时对其进行格式化)
有几种处理转换的方法。如果这是您收到该号码的唯一格式。只需替换逗号 Number('1,234.42'.replace(',', ''))
或使用为此目的创建的一些库,如 NumeralJS