2016-02-23 2 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> 

Как оценить {{ slug }} внутри второго ng-repeat?

+1

Ваше изменение полностью изменило ваш вопрос. – ryanyuyu

+2

Являются ли '$ scope.loopone' и' $ scope.looptwo' предполагаемыми массивами? Это недопустимые объекты. – ryanyuyu

ответ

0

Используйте javascript's 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

Использование может ANGULAR оценить $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> 

Это чрезвычайно легко перебирать, и вы можете нажать и удалить элементы из любой глубины с легкостью (что сразу будет отражено в представлении).

Как вы это делали, пытаясь использовать постоянные переменные, как если бы они были динамически созданы, приведет вас к пути кода спагетти и непередаваемости.

Смежные вопросы