您好,我有以下代码:
keys = [
{ label: '1', key: '1' },
{ label: '2', key: '2' },
{ label: '3', key: '3' },
{ label: '4', key: '4' },
{ label: '5', key: '5' },
{ label: '6', key: '6' },
{ label: '7', key: '7' },
{ label: '8', key: '8' },
{ label: '9', key: '9' },
{ label: 'C', key: 'Delete' },
{ label: '0', key: '0' },
{ label: '.', key: '.' }
];
我在ng-repeat中循环我的键来构建像这样的计算器:
<div class="cKeys">
<div class="cKey" ng-repeat="item in ctrl.keys" ng-click="ctrl.modifyValue(item)">{{item.label}}</div>
</div>
当我点击一个键时,我调用一个单击对象作为参数的函数。
modifyValue(obj: any) {
let str = this.currentValue + obj.key;
this.currentValue = parseFloat(str);
}
在这个函数中,我构建一个字符串并用parseFloat()
解析它以得到一个数字。 this.currentValue
是输入的ng模型,应显示我的数字。
因此,当我点击关键点:1
,2
,5
,.
(点)和3
时,我希望数字为{{ 1}}在我的输入中,但有125.3
没有意义?我想,当我使用1253
时,它应该向我展示浮动数字。怎么了?
答案 0 :(得分:1)
'.'
一旦被追加就会被删除,parseFloat('125.') === 125
。
保持两个变量。一个包含已解析的结果,另一个包含连接的字符串。始终解析连接的字符串:
modifyValue(obj: any) {
this.concatStr += obj.key;
this.currentValue = parseFloat(this.concatStr);
}
作为@ T.J。克劳德在评论中指出,这种方法意味着如果您选择'.'
,如果您之后选择另一个数字,它将不会被“遗忘”。