在Rails 3.1中从html调用javascript函数

MrJ*_*hua 2 javascript jquery coffeescript ruby-on-rails-3.1 sprockets

在rails 3.1中使用coffeescript,jQuery和链轮,将coffeescript文件编译为以下块:

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

}).call(this);
Run Code Online (Sandbox Code Playgroud)

这似乎将函数foo和bar移出了全局范围,因此bar可以由foo调用,但不能从html代码中调用。当我尝试从select onchange元素调用foo时,出现“找不到变量:foo”。

现在的解决方法是将所有全局可用的功能移至.js文件。但是,这样做的正确方法是什么?

谢谢

Dog*_*ert 5

我更喜欢声明一个顶级对象(用于命名空间),并将需要访问的所有功能附加到该对象上。

在文件顶部,添加类似

window.App = window.App || {};
Run Code Online (Sandbox Code Playgroud)

然后声明你的功能

var foo = function() { ... };
var bar = function() { ... };
Run Code Online (Sandbox Code Playgroud)

最后,需要导出功能

window.App.foo = foo;
Run Code Online (Sandbox Code Playgroud)

有点相关的信息-Rails 3.1和Coffeescript出现“找不到变量”错误