вызов функций JavaScript из html в rails 3.1 - PullRequest
2 голосов
/ 14 июля 2011

Используя coffeescript, jQuery и sprockets в rails 3.1, файлы coffeescript скомпилированы в блоки вроде:

(function() {
 var a;
 var b;
 var c;
 foo = function() { 
  alert("foo");
 }
 bar = function() {
  alert("bar");
 }

}).call(this);

Это, похоже, выводит функции foo и bar из глобальной области видимости, поэтому можно вызывать barпо foo, но ни один из них не может быть вызван из HTML-кода.Когда я пытаюсь вызвать foo из элемента select onchange, я получаю сообщение «Не могу найти переменную: foo».

Обходной путь сейчас заключается в перемещении всех глобально доступных функций в файлы .js.Но как правильно это сделать?

Спасибо

1 Ответ

4 голосов
/ 14 июля 2011

Я предпочитаю объявлять объект верхнего уровня (для пространства имен) и присоединять к нему все функции, к которым мне нужен доступ.

В верхней части файла добавьте что-то вроде

window.App = window.App || {};

Затем объявите свои функции

var foo = function() { ... };
var bar = function() { ... };

Наконец, необходимы функции экспорта

window.App.foo = foo;

Немного связанной информации - Ошибка «Не удается найти переменную» с Rails 3.1 и Coffeescript

...