javascript - 在rails 3.1中从html调用javascript函数

标签 javascript jquery coffeescript ruby-on-rails-3.1 sprockets

在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/

相关文章:

javascript - 使用请求获取API结果,并集成到Hubot响应中

javascript - 在旋转饼图的同时创建一个交互式表格

javascript - 具有动态名称的文件夹的压缩内容

javascript - 动态 iframe 中的表单提交不会被触发

javascript - 我正在尝试在 jquery 中做简单的动画功能

javascript - 我在垂直菜单下面有 jquery 代码,当我将鼠标悬停在服装选项卡上时,我有 2 个选项卡作为服装和化妆品

jquery - Materialise 自动完成不起作用

javascript - 将嵌套对象转换为数组

node.js - 运行使用 Node js 的 CoffeeScript

javascript - JS运行环境