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

У меня есть такой файл 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 }} например

НО

Что делать, если мне нужно повторить? Для миниатюр.

<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, определенного в моем контроллере.

РЕДАКТИРОВАТЬ 2. Чтобы быть более точным, вот plunkr с тем, что я именно хочу сделать: чтобы помочь вам понять, в чем моя проблема, я сделал небольшой plunkr здесь: http://plnkr.co/edit/mocztnQYvmmuc3Nslmnb?p=preview


person maxime1992    schedule 26.08.2015    source источник
comment
Ваше свойство thumbnails не является массивом. Вы должны исправить свой JSON-файл, чтобы он заработал. Насколько я вижу, в вашем HTML-коде нет ничего плохого.   -  person ArBro    schedule 26.08.2015
comment
возможный дубликат Как использовать ng-repeat для словарей в AngularJs?   -  person Julien    schedule 26.08.2015
comment
@Julien, я не думаю, что моя проблема такая же. Я не знаю, как получить доступ к объекту json, автоматически загружаемому из углового перевода useStaticFilesLoader.   -  person maxime1992    schedule 26.08.2015
comment
@ABr, вы с Микосом правы. Я изменил свой файл json, но все же... Как получить доступ к объекту json, полученному из углового перевода useStaticFilesLoader? Мне нужно что-то вроде этого: ‹div ng-repeat=thumbnail in {{ 'pages.page1.thumbnails' | перевести }}>   -  person maxime1992    schedule 26.08.2015
comment
Чтобы помочь вам понять, в чем моя проблема, я сделал небольшой plunkr здесь: ?p=предварительный просмотр   -  person maxime1992    schedule 26.08.2015


Ответы (1)


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

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

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

}

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

Сорри за плохой английский :)

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

{
    "pages": [
        {
            "fields": [
                "...",
                "...",
                "...."
            ],
            "thumbnails": [
                {
                    "illustration": "image/img_01.png",
                    "content": "...."
                },
                {
                    "illustration": "image/img_01.png",
                    "content": "...."
                },
                {
                    "illustration": "image/img_01.png",
                    "content": "...."
                }
            ]
        }
    ]
}
person Mikos    schedule 26.08.2015
comment
Черт. Я устал, ты прав! Я изменил его, как вы сказали, но на самом деле я не думаю, что ng-repeat может напрямую обращаться к файлу json. По крайней мере, мой код не работает. <div ng-repeat="vignette in pages.page1.vignettes" ..... У меня нет контроллера, который содержит страницы объектов json. Он автоматически загружается из углового перевода (см. РЕДАКТИРОВАТЬ 1). - person maxime1992; 26.08.2015
comment
Я никогда не использую useStaticFilesLoader, но у вашего json плохая структура. тебе нужно это <div ng-repeat="thumb in pages[1].thumbnails">... или <div ng-repeat="vignettein pages[1].vignettes">... - person Mikos; 26.08.2015
comment
Да, как я уже сказал в своем предыдущем комментарии, я отредактировал свой JSON так, как вы сказали. С массивом. Теперь, когда мой json правильный, что мне делать? - person maxime1992; 26.08.2015
comment
если вам нужно знать, что ваше приложение имеет доступ к какой-либо позиции в JSON, просто введите {{pages[1]}}, затем добавьте {{pages[1].thumbnails}}, мне нужен URL первого эскиза {{pages[1].thumbnails [1].url}} :) и проверьте свои результаты :) ссылка здесь проверьте свой JSON - person Mikos; 26.08.2015
comment
Чтобы помочь вам понять, в чем моя проблема, я сделал небольшой plunkr здесь: ?p=предварительный просмотр - person maxime1992; 26.08.2015
comment
О, хорошо, похоже, что useStaticFilesLoader не может читать массивы (не может читать JSON)... Его преобразование в те же константы или что это такое. (NAMESPACE.SUBNAMESPACE.HEADLINE) это "NAMESPACE" : {"SUBNAMESPACE": {"HEADLINE": "Text here...", "SUBHEADLINE": "Text here.."}}... Я пытаюсь взломать это, но вам нужно знать количество миниатюр. Создайте контроллер и используйте $translate, затем вы можете использовать $translate('YOUR_CONSTANT').then(function (translation) { "this code return promisse" }); - person Mikos; 26.08.2015
comment
Вот plnkr plnkr.co/edit/TRN2xKbyOQTOce0Bq7Ou?p=preview ... но это действительно не очень хорошая практика... Используйте перевод только для статических текстов, таких как кнопки, заполнители и т. д.... Другой текстовый вызов из базы данных, например /restAPI/page/1?lang=en - person Mikos; 26.08.2015
comment
Подождите лучшего программиста, я новичок в angular (15 дней), я не знаю, что лучше всего. - person Mikos; 26.08.2015