2012-10-26 15 views
-2

很高兴在一些Rails应用程序中开始使用coffescript。 但是,在一些项目之后,有些困难。RAILS3 // JS执行; COFFEE不是

下面的代码转换很好,但咖啡一个没有做任何事情

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工作/咖啡不经常”的问题

+0

什么是您的CS代码生成的JS代码。 Yu遇到什么错误? – robkuz

+0

不是一个有用的问题。你的意思是“更好的工作”?对代码来说,这完全是无稽之谈。它可以工作,也可以不工作。 – meagar

+0

@meagar它没有,正如你准确地说。你的评论也有效;下面提到的窗口上下文可能更有助于理解 – Ben

回答

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"] 

我坚信,这将解决您的问题。 此外,你的咖啡文件是执行,它只是不做你的期望。

希望它有帮助。

+0

我会深入研究这个上下文事物,完美工作并帮助我理解问题,解决别人的问题。 Thx很多指出这一点 – Ben

+0

不客气,我会花一些时间来了解这种类型的问题.. :) – caarlos0

+0

当我下次要问什么时,我会考虑两次。 thx再次,完美的作品 – Ben