在rails 3.1中使用coffeescript、jQuery和sprockets,coffeescript文件被编译成如下 block :
(function() {
var a;
var b;
var c;
foo = function() {
alert("foo");
}
bar = function() {
alert("bar");
}
}).call(this);
这似乎将函数 foo 和 bar 移出全局范围,因此 foo 可以调用 bar,但两者都不能从 html 代码中调用。当我尝试从 select onchange 元素调用 foo 时,我收到“找不到变量:foo”。
现在的解决方法是将所有全局可用的函数移至 .js 文件。但是正确的方法是什么?
谢谢
最佳答案
我更喜欢声明一个顶级对象(用于命名空间),并将我需要访问的所有函数附加到它。
在文件顶部添加类似内容
window.App = window.App || {};
然后声明你的函数
var foo = function() { ... };
var bar = function() { ... };
最后,需要导出功能
window.App.foo = foo;
有些相关信息 - "Can't find variable" error with Rails 3.1 and Coffeescript
关于javascript - 在rails 3.1中从html调用javascript函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6685292/