2012-02-27 5 views
1

エコテンプレートの一部としてレンダリングされる入力フィールドにjQueryオートコンプリートハンドラを接続する方法を見つける必要があります。エコテンプレートがレンダリングされた後にイベントが発生する

入力フィールドがマークアップ

HTMLでページの上にあるときにここでは正常に動作するものです:私はのsetTimeoutを使用したバージョンを試してみました

$("#the_input_field").autocomplete 
    source: "/path_to/suggest" 
    select: (event, ui) -> 
    $("#the_id_field").val ui.item.id 

<input type="text" name="thing[name]" value="" id="the_input_field"> 
<input type="hidden" name="thing[id]" value="" id="the_id_field"> 

はコーヒー3秒後に自動的にオートコンプリートを適用しましたが、これは解決策ではないことがわかりました。問題を追跡しています。私が必要とするのはレンダリングに渡されるコールバックで、完了したらオートコンプリートを添付することができます。

誰かがこれについていくつかの光を当てることを望みます。

乾杯

答えて

1

[OK]をので、私はしばらくの間、苦労したが、簡単な解決策は今renderメソッドの後に脊椎コントローラへの呼び出しを追加することのようです。なぜ私はこれを見ていないのかわかりません。

それでは、私は今、脊椎コントローラを持っていることである。

class WorkRequests extends Spine.Controller 

constructor: -> 
    super 
    @render() 

    render: => 
    @html @view('workrequests/new') 
    @renderUi() 

    renderUi: => 
    $("#the_input_field").autocomplete 
     source: "/path_to/suggest" 
     select: (event, ui) -> 
     $("#the_id_field").val ui.item.id 

window.WorkRequests = WorkRequests 

今のところ、これは、ビューがレンダリングされた後にjQueryのものを仕事と追加しているようです。私はまだ非常に重くレンダリングされたページとタイミングで問題があるかどうかを見ていますが、これは解決策だと思います。

(自分の頭がキック)

+0

なぜあなたはrenderUiメソッドを分割していますか?レンダリングの方法だけにすべきだと私には思われます。それは、テンプレートがレンダリングされるたびに発生しなければならないロジックなので、 – SpoBo

+0

唯一の理由は、私がSpineスタックに向かって動いていて、NewコントローラとEditコントローラの両方にレンダリング機能があるからです。これらは少し違うので、私はそれを乾燥状態に保ち、共通の場所に置こうとしていました。スタック内の「新規」および「編集」コントローラは、WorkRequestsを拡張します。 – slarti42uk

関連する問題