У меня есть HTML, который отображается на основе загруженных метаданных.В итоге формируется таблица данных на основе значения области действия в контроллере.
В контроллере:
$ scope.arrayOfCustomObjects = [{entry: data1}, {entry: data2}];
Метаданные содержатся в файле .json в следующем формате (я добавил два здесь, на самом деле их сотни, каждый из которых заканчивается описанием элемента HTML):
loadedMetaData:
{
"field_1": {
"index": 0,
"type": "selectbox",
"nameId": "arrayOfCustomObjects" <-- this is the string name of a scoped variable in a controller.
},
"field_2": {
"index": 1,
"type": "textinput",
"nameId": "textField"
}
}
И HTML выглядит так:
<div ng-repeat="field in loadedMetaData>
<div ng-repeat="item in field.nameId">
<!-- build out HTML for each -->
</div>
</div>
Когда я запускаю это, он не работает (он никогда не перебирает $ scope.arrayOfCustomObjects).Если я добавляю строку для отображения {{field.nameId}}, это отображает 'arrayOfCustomObjects', но я думаю, что это просто строка, а не значение, которое она представляет.
Если я изменяю HTML на это, оно работает:
<div ng-repeat="field in loadedMetaData>
<div ng-repeat="item in arrayOfCustomObjects">
<!-- build out HTML for each -->
</div>
</div>
... но есть ли способ сохранить абстракцию, ради которой я собираюсь?Я хотел бы иметь возможность определять целевой массив в метаданных, поэтому мне не нужно определять специфичные для контроллера имена в самом HTML.