Angular JS数字过滤器的行为不一致

时间:2016-03-18 11:07:11

标签: javascript angularjs angularjs-ng-repeat angularjs-filter

这可能听起来很奇怪,但相信我,我已经看到了这种情况:

我有以下Angular代码:

<tr ng-repeat="i in list">
                                    <td>{{i.name}}</td>
                                    <td ng-repeat="x in [0,1,2,3,4,5,6,7,8,9,10,11]">{{i.data[x] | number}}</td>
                                    <td>{{i.Yield| number}}</td>
                                    <td>{{i.Total | number}}</td>
                                </tr>

我遇到了上述代码的一个奇怪问题。当数据数组的少数索引为null时,我希望它们显示为null(无),如API文档所示。即使在JS中将null解析为零,也可以期望在null的位置看到零。

但是我发现一个随机行为,当少数索引转换为零并且很少保持为空。我无法确定任何模式。

更奇怪的是,即使在页面加载后,值也从零变为null或null变为零,这表明任何摘要周期都在运行并更新值。

为了做出适当的限制,我修改了上面的代码,如下所示

<tr ng-repeat="i in list">
                            <td>{{i.name}}</td>
                            <td ng-repeat="x in [0,1,2,3,4,5,6,7,8,9,10,11]">{{i.data[x] != null ? (i.data[x] | number) : ''}}</td>
                            <td>{{i.Yield === null ? '' : i.Yield | number}}</td>
                            <td>{{i.Total === null ? '' : i.Total | number}}</td>
                        </tr>

但问题仍然存在。我一直试图寻找我的任何错误,但看起来一切都很好。数据肯定为null,没有应用其他可能导致此行为的检查;没有我能看到的。

之前是否有人面对过这类事情。

1 个答案:

答案 0 :(得分:0)

将您的标记更改为:

 <td ng-repeat="item in i.data | limitTo : 12">{{item != null ? item : NaN | number }} </td>

角度数字过滤器,返回空白表示NaN,但不是空字符串(&#39;&#39;)