【问题标题】:calling javascript functions from html in rails 3.1在rails 3.1中从html调用javascript函数
【发布时间】:2011-10-04 20:16:37
【问题描述】:

在 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 移出全局范围,因此 foo 可以调用 bar,但不能从 html 代码中调用它们。当我尝试从 select onchange 元素调用 foo 时,我得到一个“找不到变量:foo”。

目前的解决方法是将所有全局可用的函数移至 .js 文件。但正确的做法是什么?

谢谢

【问题讨论】:

  • 我的做法和 Dogbert 一样,你可能想看看其他选项(包括这个)vimeo.com/24391448

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


【解决方案1】:

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

在文件的顶部,添加类似

的内容
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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 2012-09-28
    • 1970-01-01
    • 2018-01-01
    • 2020-08-29
    相关资源
    最近更新 更多