인터페이스를 더 좋게 만들기 위해 백본과 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 함수는 드롭 다운 선택 상자의 옵션을 채 웁니다 : 여기
내 커피 스크립트 코드의 조각이다. 1000 가지 옵션에 가깝습니다. 나는 드롭 다운 선택에서 많은 옵션을 허용해서는 안되는 것에 동의하지만 그것은 나중에 싸우고 싶은 전투입니다.이 코드는 로컬 호스트에서 네트워크 지연이 없기 때문에 내 로컬 컴퓨터에서 완벽하게 작동합니다. 드롭 다운의 옵션은 문제없이 표시됩니다. 그러나 네트워크에서 Heroku에 배포 된 응용 프로그램과 함께 드롭 다운 목록을 클릭하여 주변을 돌 때까지 드롭 다운이 표시되지 않고 표시됩니다. 로드되면 모든 것이 올바르게 작동합니다.
내가하고 싶은 것은 렌더링 기능의 나머지 부분이 실행되고 템플릿이 표시되기 전에 드롭 다운 선택 상자를 채울 수있는 기회가되도록 setWellSelection 호출을 어떻게 든 동기화하는 것입니다.
어떻게 해야할지 모르겠다.
귀하의 회신과 시간에 감사드립니다. 나는 반환 된 레코드의 수를 제한함으로써 HTML 렌더링이 빠르다는 것을 증명했다. 내가 알고 싶었던 것은 비동기가 아닌 'setWellSelection'함수를 'synchronous'함수로 호출하는 것입니다.이 함수는 Javascript 기본값입니다. 그렇게하면 서버에서 1000 개의 레코드가 돌아 오는 데 걸리는 시간이 얼마나 오래 걸릴지에 대한 현실적인 인식이 생깁니다.하지만 더 중요한 것은 HTML 옵션을 '빌드'하는 데 걸리는 시간입니다. – Bharat