1

Coffeescript を使用している私の Rails プロジェクトでは、ビューで次のようなことができるようにしたいと考えています。

f.text_area :content, :size => "77x4", :oninput => 'Helpers.expandTextarea(300)'

これは、必要に応じてテキストエリアを展開する coffeescript 関数を呼び出します。私の問題は、これを機能させるためにcoffeescriptの名前を適切に付けられないように見えることです。こんな感じにしてみました

# site.js.coffee
Helpers =
  expandTextarea: ->
    alert "function found!"

これはうまくいきません。Helpersブラウザ コンソールで呼び出そうとすると、undefinedエラーがスローされます。私の質問はこれです:

必要な名前空間を実現するには、site.js.coffee でどのコードを使用しますか?

4

1 に答える 1

2

Helpers手動でグローバル名前空間に入れることができます:

window.Helpers =
  expandTextarea: ->
    alert "function found!"

そうすれば、Helpers.expandTextarea(300)どこでも言いたいことが言えるはずです。もちろん、それsite.js.coffeeがすべてのページに含まれていると仮定します。

デフォルトでは、CoffeeScript ファイルは関数でラップされています。

(function() { /* compiled CoffeeScript goes here */ })();

グローバル名前空間を汚染しないようにします。このようにラップしないように CoffeeScript コンパイラにオプションを指定することはできますが、グローバルなものを に明示的に配置する方がよいでしょうwindow

于 2012-10-23T18:36:19.480 に答える