Rails3 Sprockets JS конкатенация: лучший способ избежать конфликтов JS - PullRequest
0 голосов
/ 02 апреля 2012

Допустим, есть две страницы с двумя разными HTML-элементами с одинаковым именем

a.html
<select id='collection_select'></select>


b.html
<select id='collection_select'></select>

и есть функция javascript, которая должна применяться только к a.html

a.js
$(function(){
  $('#collection_select').change(function(){
    ....
  })
})

Поскольку Rails объединяет все активы JS, эта функция теперь также применяется к b.html. Существует ли наилучшая практика Rails / Sprockets / JS для структурирования и пространственного именования ресурсов JS определенным образом, чтобы область действия JS ограничивалась конкретной страницей.

Ответы [ 2 ]

0 голосов
/ 14 июля 2016
JsSpace.on('users', {
  index: function(){
    console.log('index action of users controller');
  }
});

этот шаблон реализуется контроллером рендеринга и действием в атрибут body, затем извлекает их и выполняет функцию match. js-namespace-rails

0 голосов
/ 04 апреля 2012

Этот пост блога представляет хороший способ сделать это: http://viget.com/inspire/extending-paul-irishs-comprehensive-dom-ready-execution

Подводя итог, это

  1. Добавление атрибута data-controller в тег <body>.
  2. Области применения всех JS в пространстве имен.
  3. Затем JS Util сопоставляет и загружает JS в пространство имен JS для data-controller по соглашению.

Приветствия

...