2016-02-23 88 views
-2

我有以下循環:角度評價變量名

$scope.loop = ['loopone','looptwo']; 

$scope.loopone = {'one', 'two'}; 
$scope.looptwo = {'three', 'four'}; 

,我通過在這裏循環:

<div ng-repeat="slug in loop"> 
    <div ng-repeat="val in {{ slug }}">{{ val }}</div> 
</div> 

如何評估第二ng-repeat{{ slug }}

+1

你的編輯完全改變了你的問題。 – ryanyuyu

+2

'$ scope.loopone'和'$ scope.looptwo'應該是數組嗎?那些不是有效的對象。 – ryanyuyu

回答

0

使用javascript的bracket notation訪問具有密鑰名稱的屬性。您可以綁定到控制器函數的結果來獲取正確的數組。所以您的標記看起來是這樣的:

<div ng-repeat="slug in loop"> 
    Slug: {{slug}} 
    <div ng-repeat="val in getValuesFromSlug(slug)">{{ val }}</div> 
</div> 

和JavaScript:

$scope.getValuesFromSlug = function (slug) { 
    return $scope[slug]; 
} 

Demo on plunker

+0

對不起,更新了問題 – gespinha

+1

使用索引會不會更乾淨? '

{{ val }}
' –

+2

@MattLishman yes'$ index'非常有用。我不完全確定OP代碼當前處於什麼狀態。 – ryanyuyu

0

使用能角度評估$eval()方法,它能夠解決您的問題

<div ng-repeat="slug in loop"> 
    <div ng-repeat="val in $eval(slug)">{{ val }}</div> 
</div> 

至於@ryanyuyu提到,$scope.loopone$scope.looptwo應該陣列

$scope.loopone = ['one', 'two']; 
$scope.looptwo = ['three', 'four']; 
0

如果你要在你的視圖中的樹結構,它會是最簡單的辦法是在你的控制器樹爲好。

實施例:

在控制器:

$scope.loops = [ 
    [1,2,3], [4,5,6] 
]; 

鑑於:

<div ng-repeat="miniloop in loop"> 
    <div ng-repeat="val in miniloop">{{ val }}</div> 
</div> 

這是非常容易遍歷,並且可以推,從容易任一深度刪除元素(這將立即反映在視圖中)。

你這樣做的方式,試圖使用常量變量,就好像它們是動態創建的一樣,會引導你走一條意大利麪代碼和不可縮放的路徑。