0

私は、インターフェイスをより良くするためにバックボーンとcoffeescriptを使用するRailsアプリケーションを持っています。しかし、私はいくつかの問題にぶつかっています。私は問題が競合状態であると思う。コードスニペットの使用をさらに明確にすることが最善です。あなたは、関数定義から見ることができるようにcoffeescriptを使用してビューをレンダリングする前にバックボーン機能を実行する方法

class VGStream.Views.Scenarios.TypeWellScheduleForm extends VGStream.Views.Base.AjaxForm 
    className: 'schedule-form' 
    template: JST['backbone/templates/scenarios/type_well_schedule_form'] 

    initialize: (options) -> 
    super 
    @typeWells = options.typeWells 

    render: -> 
    @$el.html @template @ 
    @$('.well_type').val @model.get('scheduleable_type') 
    @setWellSelection() 
    @$('.well_id').val @model.get('scheduleable_id') 
    @$('.exclude').val if @model.get 'exclude' then 1 else 0 
    @calculateNetAcreage() 
    @ 

    setWellSelection: -> 
    if @$('.well_type').val() == 'TypeWell' 
     wells = @typeWells.computed 
    else 
     wells = @typeWells.imported 

    wellSelect = @$('.well_id') 

    wellSelect.empty() 

    for well in wells.models 
     wellOption = $ '<option>', 
     value: well.get 'id' 
     text: well.get 'name' 
     wellSelect.append wellOption 

setWellSelection機能は、ドロップダウン選択ボックスのオプションを取り込みます。ここ

は私のCoffeeScriptのコードのスニペットです。それは1000のオプションに近いです。私は、ドロップダウン選択で多くのオプションを許可すべきではないことに同意しますが、それは後に戦いたい戦いです。

このコードは、ローカルホストでネットワーク遅延がないため、ローカルマシン上で完全に動作します。ドロップダウンのオプションは問題なく表示されます。しかし、ネットワーク上では、アプリケーションがHerokuにデプロイされているので、ドロップダウンリストをクリックして前後するまで、ドロップダウンは表示されず、表示されます。一度ロードされると、すべて正常に動作します。

私がしたいのは、レンダリング関数の残りの部分が実行されてテンプレートが表示される前に、ドロップダウン選択ボックスを設定する機会があるように、setWellSelectionコールを何らかの形で同期させることです。

私はそれを行う方法がわかりません。

答えて

0

テンプレートから返されたhtmlを変更してから、画面にレンダリングすることができます。

htmlを直接変更すると、文字列のみになります。このようにすれば、優れたパフォーマンスのソリューションが得られますが、維持するのは難しく痛いでしょう。

もうひとつの方法は、html文字列をjqueryオブジェクトに変更し、遅くても良い方法だと思うように変更することです。後でjqueryオブジェクトから更新されたhtmlを取得し、スクリーンにレンダリングすることができます。

+0

私はあなたの応答と時間を感謝します。 HTMLのレンダリングが高速になるように、返されるレコードの数を制限することによって、私は自分自身に証明されました。私が知りたいのは、Javascriptのデフォルトである非同期ではなく、 'setWellSelection'関数を 'synchronous'関数に呼び出す方法です。そうすることで、サーバーから1000レコードが返ってくるだけでなく、HTMLオプションを「ビルド」するのにどれくらいの時間がかかるかという現実的な感覚が得られます。 – Bharat

関連する問題