簡體   English   中英

如何遍歷存在於另一個方法中的一系列對象?

[英]How do I iterate over a an array of objects that live inside another method?

我正在video.js上使用一個名為videojs-overlay的插件。 這使我可以向播放列表中的單個視頻添加重疊式廣告。

我現在想擴展此功能,以允許在不同的視頻上顯示不同的疊加層(這些疊加層是在方法內部定義的)。 我不知道這是什么問題。 如何遍歷此對象以訪問播放列表中不同視頻上的每個疊加層?

player.playlist()方法-定義不同的視頻:

player.playlist([{
    name: 'Video 1',
    overlays: [{
            content: '<div class="overlay-1a"></div>',
            showBackground: false,
            start: 'pause',
            end: 'play',
            align: 'left-middle'
        },
        {
            content: '<div class="overlay-1b"></div>',
            showBackground: false,
            start: 'pause',
            end: 'play',
            align: 'right-middle'
        }
    ]
},
{
    name: 'Video 2',
    overlays: [{
            content: '<div class="overlay-2a"></div>',
            showBackground: false,
            start: 'pause',
            end: 'play',
            align: 'left-middle'
        },
        {
            content: '<div class="overlay-2b"></div>',
            showBackground: false,
            start: 'pause',
            end: 'play',
            align: 'right-middle'
        }
    ]
}
]);

當播放列表中的視頻發生更改時,為該事件編寫代碼:我希望此事件中的重疊式廣告進行更新,並且應該迭代每個視頻中的每個覆蓋。 由於某種原因,這不起作用

  player.on('playlistitem', function (event, video) {
    player.playlist().overlays.forEach(function () {
      player.overlay({
        content: video.content,
        showBackground: video.showBackground,
        start: video.start,
        end: video.end,
        align: video.align,
        class: video.class
      });
    });

這可能就是你所追求的

  player.on('playlistitem', function (event, video) {
    player.playlist().forEach(function(video) {
      video.overlays.forEach(function (overlay) {
        overlay({
          content: video.content,
          showBackground: video.showBackground,
          start: video.start,
          end: video.end,
          align: video.align,
          class: video.class
        });
      })
    });

循環播放每個視頻,然后針對每個視頻在每個覆蓋圖上循環並更新覆蓋圖。 也許這...

  player.on('playlistitem', function (event, video) {
    var playlist =player.playlist();
     playlist = playlist.map(function(video) {
      video.overlays.map(function (overlay) {
        overlay({
          content: video.content,
          showBackground: video.showBackground,
          start: video.start,
          end: video.end,
          align: video.align,
          class: video.class
        });
      });
      player.playlist(playlist);
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM