RAILS3 // JS执行;咖啡没有

时间:2012-10-26 14:27:43

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

很高兴在某些rails应用程序中开始使用coffescript。 但是,经过一些项目,有些困难。

下面的代码翻译得很好,但咖啡没有做任何事情

JS:

(function(){
  var wf = document.createElement('script');
  wf.src = "/assets/libraries/webfonts.js";
  wf.type = 'text/javascript';
  wf.async = 'true';
  var s = document.getElementsByTagName('script')[0];
  s.parentNode.insertBefore(wf, s);
})();
WebFontConfig = {
  custom:{
    families: ['tb', 'tr'],
    urls: [ '/assets/1.fonts.css' ]
  }
}

咖啡:

(->
  wf = document.createElement("script")
  wf.src = "/assets/libraries/webfonts.js"
  wf.type = "text/javascript"
  wf.async = "true"
  s = document.getElementsByTagName("script")[0]
  s.parentNode.insertBefore wf, s
)()
WebFontConfig = custom:
  families: ["tb", "tr"]
  urls: ["/assets/1.fonts.css"]

我可以列出其他例子,但我经常面对“js works / coffee not not”问题

1 个答案:

答案 0 :(得分:4)

您的咖啡代码将转换为这样的javascript:

(function(){
  var WebFontConfig;

  (function() {
    var s, wf;
    wf = document.createElement("script");
    wf.src = "/assets/libraries/webfonts.js";
    wf.type = "text/javascript";
    wf.async = "true";
    s = document.getElementsByTagName("script")[0];
    return s.parentNode.insertBefore(wf, s);
  })();

  WebFontConfig = {
    custom: {
      families: ["tb", "tr"],
      urls: ["/assets/1.fonts.css"]
    }
  };
})

如您所见,您使用的是上下文的WebFontConfig,而不是窗口上下文。

所以,我建议你做这样的事情:

window.WebFontConfig = custom:
  families: ["tb", "tr"]
  urls: ["/assets/1.fonts.css"]

我坚信这会解决您的问题。 此外,您的Coffee文件已执行,它只是没有按预期执行。

希望它有所帮助。