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