3

これは、RailsアセットパイプラインよりもJSカプセル化の一般的な問題です。Railsアセットパイプラインの別のファイルからJS関数を呼び出す方法

私はどこでも使用されているいくつかの一般的なJSファイル持っている資産のパイプラインで

:私も実行するために、本体のクラスをターゲット

アプリ/資産/ JavaScriptの/ pickers.js.cofeee

jQuery -> 

    $('.datetimepicker').datetimepicker 
    dateFormat: 'yy-mm-dd', 
    timeFormat: 'h:mmtt', 
    ampm: true, 
    hourGrid: 4, 
    minuteGrid: 10 

    $('.datepicker').datepicker 
    dateFormat: 'yy-mm-dd' 

アプリ/資産/ JavaScriptの/ employees.js.cofeee

:コントローラ/アクション特定のページ上の特定のJS
jQuery -> 

    if $('.employees.edit').length 

    # initialize datepickers when adding new nested fields 
    $('form').live 'nested:fieldAdded', (e) -> 
     $(e.field).find('.datepicker').removeClass('hasDatepicker').datepicker 
     dateFormat: 'yy-mm-dd' 

これは反復の最も厄介な例ではありませんが、このdatepickerコードを関数に移動してemployees.js.coffeeファイルで呼び出すとしたら、どうすればいいのですか?

答えて

4

グローバルスコープ(jQueryの外)に関数を抽出します。その後、それはwindowオブジェクトのメンバーになるので、あなたのJavascriptコードのどこでも利用できます。

scopes in Javascriptについてお読みください。

+0

私は通常、すべてを「ウィンドウ」に入れないようにします。名前空間はコードを整理した状態に保ちます。 – apneadiving

関連する問題