0

最近3.1からアップグレードしたRails3.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でまだ利用できるべきではありませんか?関数が見つからない理由がわかりません。

4

1 に答える 1

2

これはグローバルスコープにある必要があり、それからあなたはそれをそのように呼ぶ必要があります。

あなたは書くべきです:

root = exports ? this

関数に名前を付けます

root.product_breadcrumb

その後、期待どおりに他の場所で呼び出すことができます。

より長い説明については、この回答を参照してください。

于 2012-11-12T21:09:39.650 に答える