Удаление ненужного дублирования - PullRequest
0 голосов
/ 05 декабря 2018

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

    start: 0,
    end: 999999,
    loop: true,

https://jsfiddle.net/hzyrfkwb/461/

  function addVideo(video, settings) {
      const defaultSettings = {
              width: settings.width || 640,
              height: settings.height || 390,
              videoId: video.dataset.id,
              playerVars: {
                  start: 0,
                  end: 999999,
                  loop: true,

Был бы способ, гдеЯ только добавил бы их, если они необходимы?

Как было сделано в этом примере:

https://jsfiddle.net/hzyrfkwb/432/

Выполнение этого удалит многоненужного дублирования.

 loadPlayer({
        target: ".jacketc",
        width: 600,
        height: 338,
        playerVars: {
            start: 200,
            end: 205,
            loop: true
        }
    });

Не обязательно указывать в верхней части:

  function addVideo(video, settings) {
 const defaultSettings = {
         width: settings.width || 640,
         height: settings.height || 390,
         videoId: video.dataset.id,
         playerVars: {
             start: 0,
             end: 999999,
             loop: true

А также навнизу:

loadPlayer({
    target: ".jacketc",
    width: 600,
    height: 338,
    playerVars: {
        start: 200,
        end: 205,
        loop: true
    }
});

Они должны быть добавлены в loadPlayer, только если они необходимы.Они не должны быть наверху в настройках по умолчанию.

start: 0,
end: 999999,
loop: true,

Это должны быть только настройки по умолчанию:

     autoplay: 1,
     controls: 1,
     showinfo: 1,
     rel: 0,
     iv_load_policy: 3,
     cc_load_policy: 0,
     fs: 0,
     disablekb: 1
 };

Это будетбыть добавленным в loadPlayer, только если они необходимы.Если они не нужны, они не должны появляться в javascript.

    start: 0,
    end: 999999,
    loop: true,

Как я смогу реализовать эту настройку в коде?

https://jsfiddle.net/hzyrfkwb/453/

Где эти playerVars не нужны в настройках по умолчанию.Они добавляются в loadPlayer только в случае необходимости.

        start: 200,
        end: 205,
        loop: true,

Именно так и работает в этом другом коде.

https://jsfiddle.net/hzyrfkwb/465/

Как мне реализовать это в новом обновленном коде?

https://jsfiddle.net/hzyrfkwb/453/

1 Ответ

0 голосов
/ 05 декабря 2018

Я не совсем понимаю ваш вопрос, но, насколько я понимаю, вы хотите установить playerVars опционально в функции addVideo(), но не хотите определять playerVars в качестве входной переменной?может быть, вы можете попробовать это

["start", "end", "loop"].forEach(function (a) {
    if (settings[a]) {
        defaultSettings.playerVars[a] = settings[a];
    }
});
// or
for (let a of ["start", "end", "loop"]) {
  if (settings[a]) defaultSettings.playerVars[a] = settings[a];
}
// or
let optional = ["start", "end", "loop"];
for (let i = 0; i < optional.length; i++) {
  if (settings[optional[i]]) {
    defaultSettings.playerVars[optional[i]] = settings[optional[i]];
  }
}

полный код

function addVideo(video, settings) {
  const defaultSettings = {
    width: settings.width || 640,
    height: settings.height || 390,
    videoId: video.dataset.id,
    playerVars: {
      autoplay: 1,
      controls: 1,
      showinfo: 1,
      rel: 0,
      iv_load_policy: 3,
      cc_load_policy: 0,
      fs: 0,
      disablekb: 1
    },
    events: {
      "onReady": onPlayerReady,
      "onStateChange": onPlayerStateChange
    }
  };
  ["start", "end", "loop"].forEach(function(a) {
      if (settings[a]) defaultSettings.playerVars[a] = settings[a];
  });
  const updatedSettings = combineSettings(defaultSettings, settings);
  console.log(updatedSettings)
  players.push(new YT.Player(video, updatedSettings));
}
...