У меня есть массив json, отформатированный так:

share.videos = [
  {
    sources: [
      {src: $sce.trustAsResourceUrl('http://example.com/Inner_Strength.mp4'), type: 'video/mp4'},
      {src: $sce.trustAsResourceUrl('http://example.com/Inner_Strength.webm'), type: 'video/webm'},
      {src: $sce.trustAsResourceUrl('http://example.com/Inner_Strength.ogv'), type: 'video/ogg'}
    ],
    info: [
      {
        'title': 'Inner Strength',
        'videoFile': 'Inner_Strength_HD.mp4'
      }
    ]
  }]

Я хотел бы использовать ng-options, чтобы получить заголовок из info.title

ng-options="i.info.title for i in share.videos"

Дает мне пустые метки в моем элементе select в моей DOM, но с правильным количеством опций.

Можно ли использовать ng-options с массивом, отформатированным так?

1
Jared Whipple 17 Дек 2015 в 09:48

3 ответа

Лучший ответ

info - это массив, а не объект.

Вы должны указать его индекс.

Попробуйте вот так

ng-options="i.info[0].title for i in share.videos"
1
Anik Islam Abhi 17 Дек 2015 в 06:50

Я считаю, что у вашего info есть несколько названий, как показано ниже:

share.videos = [
  {
    sources: [
      {src: $sce.trustAsResourceUrl('http://example.com/Inner_Strength.mp4'), type: 'video/mp4'},
      {src: $sce.trustAsResourceUrl('http://example.com/Inner_Strength.webm'), type: 'video/webm'},
      {src: $sce.trustAsResourceUrl('http://example.com/Inner_Strength.ogv'), type: 'video/ogg'}
    ],
    info: [
      {
        'title': 'Inner Strength',
        'videoFile': 'Inner_Strength_HD.mp4'
      },
      {
        'title': 'Another Title',
        'videoFile': 'Inner_Strength_HD_another.mp4'
      },

    ]
  }]

В этом случае вы должны использовать его как -

ng-options="i.title for i in share.videos[0].info"
0
Rabi 17 Дек 2015 в 06:54

Вы можете попробовать что-то вроде этого:

ng-options="video in share.videos"
    ng-options="inf in video.info"
        {{inf.title}}
0
virendrao 17 Дек 2015 в 06:53