我在页面上有几个简短的Angularjs表达式,它们使用值执行一些基本算术。由于算术,它们总是计算为null,直到传递了一个值。我意识到这可能不是解决这个问题的最好方法,并且愿意接受建议,但我认为在这种情况下,我只想知道如何隐藏NaN的视图。
{{myItem.value / 4}}
我已经尝试了here提到的解决方案,但我认为我的情况不同,因为每次都会计算数学,因此返回NaN,而不是数字,(null)。
答案 0 :(得分:2)
试试这个
<div ng-hide="!(myItem.value / 4)">
{{myItem.value / 4}}
</div>
答案 1 :(得分:0)
创建过滤器:
app.filter('divide', function() {
function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
return function(value, arg) {
if (isNumeric(value) && isNumeric(arg))
return parseFloat(value)/parseFloat(arg);
return value;
}
});
用法:
{{ myItem.Value | divide: 4 }}
如果myItem.Value或传递给除法过滤器的参数不是数字(或未定义),那么它只会返回未改变的原始值。
如果要隐藏值,如果它未定义或不是数字,则过滤器会帮助您再次出现:
app.filter('numberDefault', function() {
return function(value, defaultValue) {
function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
if (isNumeric(value))
return parseFloat(n);
return defaultValue;
}
});
然后你可以链接它们:
{{ myItem.Value | numberDefault:'' | divide: 4 }}
如果myItem.Value不是数字,则numberDefault将返回一个空字符串。传递给除法过滤器时,空字符串只返回原始值,即空字符串。