【问题标题】:CoffeeScript function can not be found找不到 CoffeeScript 函数
【发布时间】:2012-11-01 07:53:40
【问题描述】:

我有一个最近从 3.1 升级的 Rails 3.2.8 应用程序,并且我已将所有原始 application.js 代码转换为 CoffeeScript。其中大部分工作正常。但是,我有一个面包屑函数,我在几个未找到的视图中调用它。目前,我只是发出警报以查看它是否正常工作:

product_breadcrumb = (attr) ->
  alert attr

位于名为product_search.js.coffee 的文件中。它正在成功编译,最终看起来像这样:

(function() {
  var product_breadcrumb;
  product_breadcrumb = function(attr) {
    return alert(attr);
  };
}).call(this);

我想是的,我不知道。无论如何,在 Firebug 中我得到了:

ReferenceError: product_breadcrumb is not defined

请注意,这是在 Ajax 调用之后。我不知道为什么该功能不可用。毕竟这只是一个函数定义。它不应该仍然可用于 Ajax 调用中呈现的 HTML 吗?我不明白为什么找不到函数。

【问题讨论】:

  • 如果你在控制台输入product_breadcrumbproduct_breadcrumb("foo"),它会返回一个值吗?
  • 另外,您粘贴的已编译 JS 中的括号似乎不匹配,这可能很重要,也可能不重要。附在}).call 中的括号是什么?
  • 感谢 Jason,剪切和粘贴错误。固定。
  • 控制台问题呢?
  • @JasonSwett 这只是一个命名空间问题,这就是他收到引用错误的原因。

标签: ruby-on-rails-3 coffeescript ruby-on-rails-3.2


【解决方案1】:

这需要在全局范围内,然后你需要这样调用它。

你应该写:

root = exports ? this

并命名你的函数

root.product_breadcrumb

然后您可以按预期在其他地方调用它。

请参阅this answer 以获得更长的解释。

【讨论】:

    猜你喜欢
    • 2012-07-12
    • 1970-01-01
    • 2016-04-20
    • 2014-02-11
    • 2012-02-17
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 2013-01-17
    相关资源
    最近更新 更多