Угловой перевод: повторить на объекте json

0

У меня есть json файл:

{
    "pages": {
        "page1": {
            "field1": "....",
            "field2": "....",
            "field3": "....",
            "thumbnails": [
                {
                    "illustration": "images/img.png",
                    "content": "...."
                },
                {
                    "illustration": "images/img.png",
                    "content": "...."
                },
                {
                    "illustration": "images/img.png",
                    "content": "...."
                }
            ]
        },
        ......

Когда я хочу использовать его в своем html, я просто делаю:
{{ 'pages.page1.field1' | translate }} {{ 'pages.page1.field1' | translate }} например

НО

Что, если мне нужно повторить? Для эскизов.

<div ng-repeat="thumbnail in pages.page1.thumbnails">
      {{ thumbnail.content }}
</div>

Но, очевидно, это не работает. Я не знаю, как получить доступ к эскизам.

ИЗМЕНИТЬ 1:

Я использую "useStaticFilesLoader", как это в моей конфигурации:

$translateProvider.useStaticFilesLoader({
    prefix: 'assets/app_components/app/languages/emag_',
    suffix: '.json'
});

Поэтому у меня нет json, который определен в моем контроллере.

EDIT 2: Чтобы быть более точным, здесь plunkr с тем, что я точно хочу сделать: чтобы помочь вам понять, в чем моя проблема, я сделал небольшой plunkr здесь: http://plnkr.co/edit/mocztnQYvmmuc3Nslmnb?p=preview

  • 1
    Ваше свойство эскизов не является массивом. Вы должны исправить свой JSON-файл, чтобы он заработал. Насколько я понимаю, в вашем HTML-коде нет ничего плохого.
  • 0
    Возможный дубликат Как использовать ng-repeat для словарей в AngularJs?
Показать ещё 3 комментария
Теги:
angular-translate

1 ответ

1

У вас плохой файл json. У вас есть объекты в объекте. Вам нужен массив.

Попробуй это.

{
"thumbnails": [
    {
        "illustration": "images/img.png",
        "content": "...."
    },
    {
        "illustration": "images/img.png",
        "content": "...."
    },
    {
        "illustration": "images/img.png",
        "content": "...."
    }
]

}

Я думаю, что ng-repeat работает только с массивом, потому что ng-repeat нужно знать длину.

Sry для плохой английский :)

Страницы той же проблемы.

{
    "pages": [
        {
            "fields": [
                "...",
                "...",
                "...."
            ],
            "thumbnails": [
                {
                    "illustration": "image/img_01.png",
                    "content": "...."
                },
                {
                    "illustration": "image/img_01.png",
                    "content": "...."
                },
                {
                    "illustration": "image/img_01.png",
                    "content": "...."
                }
            ]
        }
    ]
}
  • 0
    Черт. Я устал, ты прав! Я изменил его, как вы сказали, но на самом деле я не думаю, что ng-repeat может напрямую обращаться к файлу json. По крайней мере, мой код не работает. <div ng-repeat="vignette in pages.page1.vignettes" ..... У меня нет контроллера, который содержит страницы объекта json. Он автоматически загружается из углового перевода (см. «РЕДАКТИРОВАНИЕ 1»).
  • 0
    Я никогда не использую useStaticFilesLoader, но у вашего json плохая структура. вам нужно это <div ng-repeat="thumb in pages[1].thumbnails">... или <div ng-repeat="vignettein pages[1].vignettes">...
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню