CoffeeScript выполняет функцию при загрузке страницы - PullRequest
0 голосов
/ 30 января 2020

Я написал простой кофейный скрипт для отображения / скрытия средства выбора даты в зависимости от выбранной опции из раскрывающегося списка, и он работает, но имеет небольшой недостаток - после того, как я выбрал дату в устройстве выбора даты и отправил форму, средство выбора даты исчезает, что, я считаю, может быть немного запутанным для конечных пользователей. Чтобы исправить это, я написал дополнительную функцию и выполнил ее «при загрузке окна», однако это разбивает мои тесты Jasmine таким образом, что весь набор тестов даже не запускается локально и CI.

Это код Я написал.

  1. Функция для включения / выключения DatePicker в зависимости от выбранного значения из выпадающего списка
$(document).on 'ready page:load page:restore', ->
  $('body').on 'change', '.filter_status', (ev) ->
    selected = ev.target.value
    if selected == 'option_1' || selected == 'option_2'
      $('#datepicker').show()
    else $('#datepicker').hide()
Функция для проверки того, какая опция еще выбрана, и включение / выключение средства выбора даты
toggleDatepicker = ->
    selected = $('.filter_status #status').children('option:selected').val()
    if selected == 'option_1' || selected == 'option_2'
      $('#datepicker').show()

Выполнение функции при загрузке окна.

window.onload = toggleDatepicker

Это работает нормально Однако, когда я go до http://localhost:3000/specs для запуска JS тестов ничего не происходит. У меня более 200 тестов, и ни один из них даже не запущен, я вижу только пустую страницу. Также он ломает мою тестовую сборку CI, сборка зависает. У вас есть идеи, как мне обойти это?

Это весь сценарий.

$(document).on 'ready page:load page:restore', ->
  $('body').on 'change', '.filter_status', (ev) ->
    selected = ev.target.value
    if selected == 'option_1' || selected == 'option_2'
      $(#datepicker').show()
    else $('#datepicker').hide()

  toggleDatepicker = ->
    selected = $('.filter_status #status').children('option:selected').val()
    if selected == 'option_1' || selected == 'option_2'
      $('#datepicker').show()
  window.onload = toggleDatepicker

1 Ответ

0 голосов
/ 30 января 2020

Я нашел более простое решение. Я решил установить класс динамически в моем шаблоне rails, определив вспомогательный метод, который возвращает класс css на основе строки запроса, переданной из формы пользовательского интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...