2013-01-16 71 views
3

是否可以向範圍變量添加整數?AngularJS - 將值添加到值

e.g

<div style="top:{{top + 140}}px">....</div> 

如果頂部是140,應該給我「280像素」,而不是「140140px」

這可能嗎?

+0

是jQuery可接受的替代方案嗎? [像這樣](http://jsfiddle.net/7ppvk/) – ClydeFrog

+0

是什麼地方定義的頂部? – ClydeFrog

+0

頂部是在$ scope.dealer中,我正在使用ng-repeat =「d在經銷商中」。 如此正確,它將是d.top。 – Marek123

回答

4

不,我認爲這是最好的方法,但你可以嘗試:

<div style="top:{{top * 1 + 140}}px">....</div> 

要強制頂部,成爲一個整數。

+1

+1這將起作用,但在大多數情況下,最好在控制器級別確保該值爲整數。控制者的工作是減輕這種事情,而不是觀點。 –

+0

是的,它的工作。我該怎麼做,控制器發送一個整數? – Marek123

+0

@ Marek123請參閱下面的答案。 – Swordfish0321

1

關於你的迴應@Mathew伯格:

你正在運行到這個問題的原因是因爲你是在告訴角度說,「頂」是一個字符串。儘管Mathew的方法可以把值解釋爲一個整數,但它基本上仍然是一種解決方法。 @blesh說你應該在控制器級別這樣做是完全正確的。所以......

function myContoller($scope) { 
    $scope.top = '1'; 
} 
<div style="top:{{top + 140}}px"></div> 
<!-- Output = <div style="top:1140px"></div> --> 

function myContoller($scope) { 
    $scope.top = 'one'; 
} 
<div style="top:{{top + 140}}px"></div> 
<!-- Output = <div style="top:one140px"></div> --> 

以同樣的方式進行處理。

基本上你是不經意地連接而不是預期的算術。

這種補救措施非常容易。你所需要做的就是從你傳遞的整數中刪除括號,然後Angular會說「嘿,這是一個數字,讓我們做一些數學」。

eg 
function myController($scope) { 
    $scope.top = 140; 
} 

<div style="top:{{top + 140}}px"></div> 
<!-- Output = <div style="280px"></div> --> 

你說「頂在$ scope.dealer和我使用的是NG重複=」,在經銷商d「所以正確這將是d.top」,所以你可能需要調整這個有一點可以訪問適當的範圍,但解決方案仍然適用。關於Angular的一個很棒的事情是,它可以固有地處理標記語法中的表達式。希望這將有助於解釋導致您的問題的原因,因爲Angular DOES按照您希望的方式工作,因爲它應該。 =)