Как я могу получить доступ к функциям jquery, определенным в ресурсах javascript foler, к моему расширению js.erb под конкретным контроллером?

0

У меня есть файл custom.js в папке app/assets, который был создан при создании пользовательского контроллера. Теперь я создал файл custom_action.js.erb в приложении/представлениях/обычаях, который является частью пользовательских представлений контроллера. Этот файл custom_action.js.erb используется для обработки ajax respose.

Теперь проблема, с которой я сталкиваюсь, заключается в том, что я не могу использовать функции доступа, определенные в custom.js для custom_action.js.erb. Это мой файл custom.js.

$(document).ready(function(){
     function someFunction() {
            // do something              
     }
}

И это мой файл custom_action.js.erb.

$('#selector').onClick{
    someFunction();  //This is where I want to access the custom.js function
}

Сейчас я повторяю эту функцию в файле custom.js и custom_action.js.erb. Есть ли способ избежать этого повтора и сделать функцию доступной, когда я определяю ее в файле custom.js.

Теги:
ruby-on-rails-3.2

1 ответ

1
Лучший ответ

Вам не нужно обертывать функцию в $(document).ready. Когда вы это делаете, он имеет только область видимости в этой конкретной функции обработчика обратного вызова. Также jQuery не имеет метода onClick.

$(document).ready необходим только для кода, который будет немедленно запускаться при загрузке страницы, что необходимо будет найти элементы на странице.

function someFunction() {
            // do something              
     }

$(document).ready(function(){
    $('#selector').click(function(){
         someFunction();
    });
      /* or */
      $('#selector').click(someFunction);
});
  • 0
    Если я определю функцию test () вне $ (document) .ready, а кто-то из моей команды определит свою собственную функцию test () вне $ (document) .ready, это приведет к конфликту? Вот причина, по которой я хранил его внутри $ (document) .ready.
  • 0
    может, конечно, создать его в другом объекте и сохранить все глобальные функции в этом объекте, чтобы избежать конфликтов такого рода. Проблема, которую вы описали, однако, является простым вопросом закрытия и объема
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню