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 함수는 드롭 다운 선택 상자의 옵션을 채 웁니다 : 여기

내 커피 스크립트 코드의 조각이다. 1000 가지 옵션에 가깝습니다. 나는 드롭 다운 선택에서 많은 옵션을 허용해서는 안되는 것에 동의하지만 그것은 나중에 싸우고 싶은 전투입니다.

이 코드는 로컬 호스트에서 네트워크 지연이 없기 때문에 내 로컬 컴퓨터에서 완벽하게 작동합니다. 드롭 다운의 옵션은 문제없이 표시됩니다. 그러나 네트워크에서 Heroku에 배포 된 응용 프로그램과 함께 드롭 다운 목록을 클릭하여 주변을 돌 때까지 드롭 다운이 표시되지 않고 표시됩니다. 로드되면 모든 것이 올바르게 작동합니다.

내가하고 싶은 것은 렌더링 기능의 나머지 부분이 실행되고 템플릿이 표시되기 전에 드롭 다운 선택 상자를 채울 수있는 기회가되도록 setWellSelection 호출을 어떻게 든 동기화하는 것입니다.

어떻게 해야할지 모르겠다.

답변

0

서식 파일에서 반환 된 HTML을 화면에 렌더링하기 전에 수정할 수 있습니다.

html을 직접 수정할 수 있으므로 문자열 만 변경됩니다. 이 방법을 사용하면 훌륭한 성능 솔루션을 갖게되지만 유지 관리가 어려울 수 있습니다.

또 다른 방법은 html 문자열을 jquery 객체로 바꾸고 느린 경우에도 더 나은 방법이라고 생각하는 방식으로 수정하는 것입니다. 나중에 jquery 객체에서 업데이트 된 html을 가져 와서 화면에 렌더링 할 수 있습니다.

+0

귀하의 회신과 시간에 감사드립니다. 나는 반환 된 레코드의 수를 제한함으로써 HTML 렌더링이 빠르다는 것을 증명했다. 내가 알고 싶었던 것은 비동기가 아닌 'setWellSelection'함수를 'synchronous'함수로 호출하는 것입니다.이 함수는 Javascript 기본값입니다. 그렇게하면 서버에서 1000 개의 레코드가 돌아 오는 데 걸리는 시간이 얼마나 오래 걸릴지에 대한 현실적인 인식이 생깁니다.하지만 더 중요한 것은 HTML 옵션을 '빌드'하는 데 걸리는 시간입니다. – Bharat