在rails 3.1中从html调用javascript函数

发布于 2024-11-19 22:37:54 字数 400 浏览 5 评论 0原文

在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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜血缘 2024-11-26 22:37:54

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

在文件顶部添加类似的内容

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

然后声明您的函数

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

最后,需要导出函数

window.App.foo = foo;

一些相关信息 - 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

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

Then declare your functions

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

Lastly, export functions needed

window.App.foo = foo;

Somewhat related info - "Can't find variable" error with Rails 3.1 and Coffeescript

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文