在rails 3.1中从html调用javascript函数
在rails 3.1中使用coffeescript、jQuery和sprockets,coffeescript文件被编译成如下块:
(function() {
var a;
var b;
var c;
foo = function() {
alert("foo");
}
bar = function() {
alert("bar");
}
}).call(this);
这似乎将函数foo和bar移出全局范围,因此bar可以由foo调用,但两者都不能从html代码中调用。当我尝试从 select onchange 元素调用 foo 时,我收到“找不到变量:foo”。
目前的解决方法是将所有全局可用的函数移至 .js 文件。但这样做的正确方法是什么?
谢谢
Using coffeescript, jQuery, and sprockets in rails 3.1 the coffeescript files are compiled in to blocks like:
(function() {
var a;
var b;
var c;
foo = function() {
alert("foo");
}
bar = function() {
alert("bar");
}
}).call(this);
This seems to move functions foo and bar out of global scope, so bar can be called by foo, but neither can be called from the html code. When I try to call foo from a select onchange element, I get a "Can't find variable: foo".
The workaround right now is to move all globally available functions to .js files. But what's the right way to do this?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我更喜欢声明一个顶级对象(用于命名空间),并将我需要访问的所有函数附加到它。
在文件顶部添加类似的内容
然后声明您的函数
最后,需要导出函数
一些相关信息 - Rails 3.1 和 Coffeescript 出现“找不到变量”错误
I prefer declaring a top level object (for namespacing), and attaching all the functions that I'll need access to, to it.
At the top of your file, add something like
Then declare your functions
Lastly, export functions needed
Somewhat related info - "Can't find variable" error with Rails 3.1 and Coffeescript