AngularJS表达式连接而不是添加

时间:2013-11-21 11:59:56

标签: angularjs

我的HTML中有以下两个表达式(作为ngClick指令中调用的控制器函数的参数),我试图实现简单的分页功能:

{{ (currentPage|number)+(1|number) }} - 这将两个值连接在一起,就好像它们是一个字符串一样。

{{ (currentPage|number)-(1|number) }} - 计算正确和预期的数值结果。

知道问题在这里吗?我已经尝试了各种方法来添加文字和AngularJS值无济于事。我使用的是1.2.0版本。

提前致谢!

6 个答案:

答案 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)}}

确保表达式在(括号)内