我的HTML中有以下两个表达式(作为ngClick指令中调用的控制器函数的参数),我试图实现简单的分页功能:
{{ (currentPage|number)+(1|number) }}
- 这将两个值连接在一起,就好像它们是一个字符串一样。
{{ (currentPage|number)-(1|number) }}
- 计算正确和预期的数值结果。
知道问题在这里吗?我已经尝试了各种方法来添加文字和AngularJS值无济于事。我使用的是1.2.0版本。
提前致谢!
答案 0 :(得分:3)
在像我这样的极端情况下,上述解决方案都不起作用,有一个救星解决方案:减去0,然后执行添加。
所以你的加法表达
{{ (currentPage|number)+(1|number) }}
可以重写为
{{ (currentPage|number) - 0 +(1|number) }}
为了进一步解释,强制使表达式通过减去0来显示为数字。
答案 1 :(得分:1)
由于+
是加法和连接运算符,因此连接优先,而-
只是减法。无论您在何处计算数值或在表达式中使用parseInt()
,都要尝试使用。
提交
答案 2 :(得分:1)
我尝试了parseFloat()但由于某种原因无效。但由于使用 - 将默认为数学运算,而不是添加(+)我减去了负数。
$scope.add = function() {$scope.counter += $scope.amount;} // doesn't work
$scope.add = function() {$scope.counter -= -$scope.amount;} // works perfectly.
答案 3 :(得分:1)
你可以这样做:
{{ (currentPage|number)-(-1|number) }} instead of {{ (currentPage|number)+(1|number) }}
答案 4 :(得分:0)
正如您在docs中看到的,数字过滤器返回一个字符串。 +
运算符是String中的串联操作。
您必须自己将字符串解析为数字。
这样的事情:
.filter('toNumber', function() {
return function(n) {
return new Number(n);
};
});
答案 5 :(得分:-1)
{{" - " + (priceInfo.adjustment_base_price2)}}
确保表达式在(括号)内