Повторное использование стимулирующего действия в другом месте страницы?

Я подключаю слабый клон (html / css) и получаю его так, чтобы справочный ящик открывался / закрывался, когда я нажимаю на x. Я также хочу открыть / закрыть его из области навигации и подумал, что могу просто взять тот же link_to и вызвать его из другой части страницы.

Но когда я это делаю, если я вызываю его из другой цели, я получаю сообщение об ошибке

      Error invoking action "click->navigation#toggle_reference_drawer"
Error: Missing target element "navigation.referenceDrawer"

Как я могу использовать код внутри целевого объекта данных для запуска другого целевого объекта данных?

то есть то, что я пытаюсь заставить работать, это

- частичная навигация (link_to не работает) -

      <div data-navigation-target="storyNavLinks">
   <div class ="story">
     <%= link_to "[x]", "#", data: { action: "click->navigation#hide_reference_drawer" } %>
   </div>
</div>

- приложение частичное (link_to работает) -

        <div data-navigation-target="referenceDrawer">
     <div class='reference box'>
        <%= link_to "[x]", "#", data: { action: "click->navigation#hide_reference_drawer" } %>
     </div>
  </div>
 

Не уверен, где я ошибаюсь ... Я решил, что до тех пор, пока цель, на которую ссылаются, уникальна и на странице не должно иметь значения, откуда она вызывается?

1 ответ

Решение

Вы должны убедиться, что ваш data-controllerАтрибут находится в элементе, который охватывает обе цели. Если это невозможно, вы всегда можете включить контроллер дважды, но цели будут привязаны только к каждому экземпляру, поэтому вам нужно будет добавить их дважды.

Другие вопросы по тегам