AngularJS - 禁用浮点过滤

时间:2014-01-09 20:10:20

标签: javascript json angularjs angularjs-directive

我正在AngularJs中创建一个指令。 指令将从app控制器接收一个JSON对象,并根据该指令显示内容。

我根据我的问题做了一个简单的演示,可以在http://jsfiddle.net/darkyndy/6StLm/

找到

现在我的JSON看起来像: ctrlItemJson = { myk: "something", state: { step: 1.0 } };

当我访问state.step时,为什么在指令链接,控制器和视图中我得到 1 而不是 1.0

将值设置为字符串'1.0'它可以工作,但对我来说,我需要与控制器发送它的方式完全相同。

稍后编辑: 这主要来自Javascript,就好像你试试 var a = 1.0然后尝试console.log(a),您会看到1

在本案例中,我将与API人员讨论发送字符串......

解决方案

1。如果您无法控制价值:

对于你想要保留小数的位置(小数是零,例如:1.02.00)而不是使用浮点数然后使用字符串(例如:'1.0''2.00' )。

2. 如果您可以控制并知道精度(指令将决定精度):

然后检查此问题的回复。 示例:http://jsfiddle.net/SE5s3/

2 个答案:

答案 0 :(得分:1)

您可以使用.toPrecision(x)在JavaScript中指定某个浮点精度,其中x是您想要的精度。

以下是实现此功能的jsfiddle的一个版本:http://jsfiddle.net/SE5s3/

我更改的具体代码:

<input type="text" value="{{dyItemJson.state.step.toPrecision(2)}}"/>

答案 1 :(得分:0)

这不是AngularJS相关的东西,而是JavaScript。例如,

var a = 2.0;

实际上只是2。

如果您希望将数字设置为特定的小数位,也可以使用Angular中的数字过滤器:

    template: '<input type="text" value="{{dyItemJson.state.step | number:2}}"/>',