Я знаю, что мы можем легко использовать ng-repeat для json-объектов или массивов, таких как:
<div ng-repeat="user in users"></div>
но как мы можем использовать ng-repeat для словарей, например:
var users = null;
users["182982"] = "{...json-object...}";
users["198784"] = "{...json-object...}";
users["119827"] = "{...json-object...}";
Я хочу использовать это со словарем пользователей:
<div ng-repeat="user in users"></div>
Является ли это возможным?. Если да, как я могу сделать это в AngularJs?
Пример для моего вопроса: в C # мы определяем словари как:
Dictionary<key,value> dict = new Dictionary<key,value>();
//and then we can search for values, without knowing the keys
foreach(var val in dict.Values)
{
}
Есть ли встроенная функция, которая возвращает значения из словаря, как в C #?
Ответы:
Ты можешь использовать
Смотрите документацию ngRepeat . Пример: http://jsfiddle.net/WRtqV/1/
источник
Я также хотел бы упомянуть новую функциональность AngularJS
ng-repeat
, а именно, специальные повторные начальную и конечную точки . Эта функциональность была добавлена для того, чтобы повторять серию HTML-элементов вместо одного родительского HTML-элемента.Для того , чтобы начать и конечное использование повторителя точек необходимо определить их с помощью
ng-repeat-start
иng-repeat-end
директив соответственно.ng-repeat-start
Директива работает очень похожа наng-repeat
директиву. Разница в том, что он будет повторять все элементы HTML (включая тег, для которого он определен) до конечного тега HTML, вng-repeat-end
который помещается (включая тег сng-repeat-end
).Пример кода (от контроллера):
Образец HTML-шаблона:
Вывод будет выглядеть примерно так (в зависимости от стиля HTML):
Как видите,
ng-repeat-start
повторяются все элементы HTML (включая элемент сng-repeat-start
). Всеng-repeat
специальные свойства (в данном случае$first
и$index
) также работают как положено.источник
<div ng-repeat-end>..</div>
в своей разметкеРазработчики JavaScript склонны ссылаться на вышеупомянутую структуру данных как объект или хэш вместо словаря.
Ваш синтаксис выше неправильный, так как вы инициализируете
users
объект как нулевой. Я предполагаю, что это опечатка, так как код должен читать:Чтобы извлечь все значения из хеша, вам нужно перебрать его, используя цикл for:
Если вы планируете много работать со структурами данных в JavaScript, то библиотека underscore.js определенно стоит посмотреть. Подчеркивание поставляется с
values
методом, который выполнит вышеуказанную задачу для вас:Я сам не использую Angular, но я почти уверен, что будет встроен удобный метод для перебора значений хеша (ага, вот так, Артем Андреев дает ответ выше :))
источник
В Angular 7 будет работать следующий простой пример (при условии, что словарь находится в переменной с именем
d
):my.component.ts:
my.component.html: (отобразит список пар ключ: значение)
источник