2013-11-21 35 views
3

,我有以下2個表達在我的HTML(作爲參數有關稱爲ngClick指令內的控制器功能),在這裏我想實現簡單的分頁功能:AngularJS表達串聯,而不是添加

{{ (currentPage|number)+(1|number) }} - 這將這兩個值連接在一起就好像它們是一個字符串一樣。

{{ (currentPage|number)-(1|number) }} - 這會計算正確和預期的數字結果。

任何想法是什麼問題在這裏?我嘗試了各種方法來將文字和AngularJS值加在一起無濟於事。我正在使用版本1.2.0。

在此先感謝!

+3

由於'+'是一個加法和連接運算符,所以連接是優先,而' - '只是減法。嘗試使用'parseInt()'無論您計算數字值還是在表達式中。 – SamV

+0

這已經工作了 - 謝謝你! –

+0

我提交它作爲解決此問題的答案。 – SamV

回答

1

由於+是加法和連接運算符拼接正在採取優先,而-僅僅是減法。無論您計算數值還是表達式內,請嘗試使用parseInt()

提交,因爲它的工作

0

正如你可以在docs看到,數字過濾器返回一個字符串。 +運算符是String中的連接操作。

你必須自己將字符串解析爲數字。

事情是這樣的:

.filter('toNumber', function() { 
    return function(n) { 
     return new Number(n); 
    }; 
}); 
1

我試過parseFloat(),但出於某種原因,沒有工作。但由於使用 - 將默認爲數學運算,而不是加(+)我減去了一個負數。

$scope.add = function() {$scope.counter += $scope.amount;} // doesn't work 

    $scope.add = function() {$scope.counter -= -$scope.amount;} // works perfectly. 
1

你可以這樣做:

{{ (currentPage|number)-(-1|number) }} instead of {{ (currentPage|number)+(1|number) }} 
2

在某些極端情況下像我這樣,在以上解決方案的工作,有一個救世主的解決方案:減去0,然後執行加法。

所以您除了表達

{{ (currentPage|number)+(1|number) }}

可以重新寫爲

{{ (currentPage|number) - 0 +(1|number) }}

爲了進一步解釋,表達被強制由通過減法顯示爲號碼0.

相關問題