2013-06-07 2 views
0

캔버스 요소를 사용하는 Ember 응용 프로그램이 있습니다. 나는 다음과 같은 모델을 사용하고 있습니다 :여러 모델이 Ember보기로로드 될 때까지 기다려주십시오.

키트 hasMany의에게 포지션 hasMany의 구성 요소 hasMany의 특징

첫 키트 모델 데이터를로드

지도 노선 개체 :

App.MapRoute = Ember.Route.extend({ 

    model : function() { 
    return App.Kit.find(1); 
    }, 

    setupController: function(controller, model){ 
    this._super(controller, model); 
    } 
}); 

이 경로의 캔버스 요소보기

<script type="text/x-handlebars" data-template-name="application"> 
    {{outlet}} 
</script> 

<script type="text/x-handlebars" data-template-name="map"> 
    {{view App.CanvasView }} 
</script> 

캔버스보기 :

App.CanvasView = Ember.View.extend({ 
    tagName: 'canvas', 
    width: 600, 
    height: 600, 

    didInsertElement: function(){ 
    var el = this.$(); 

    // Pseudo Code 
    // When all kit, Position, Component and Feature Data is loaded 
    // Pass Data to createFabricCanvas 
    // this.createFabricCanvas(el, data); 

    }, 

    createFabricCanvas: function(el, data){ 
    fabCanvas = new fabCanvas(el, data); 
    } 
}); 

내 문제는 내가 그것을 fabCanvas로 전달하기 전에로드되는 hasMany의 모델의 각각에 대한 모든 데이터를 확인 할 방법이다. FabCanvas 라이브러리는 미리 작성되고 처리하기 전에 모든 데이터를 사용할 수 있다고 가정합니다.

해결책은 .on ('didLoad')을 사용하여 각 모델의 존재 여부를 확인하는 것입니다.

감사합니다.

답변

0

당신은 아마 확인이 답변 herehere에서 제안 같은 상위 모델 배열에 isLoaded 속성을 관찰하기 위해 시도 할 수 있습니다. 비록 이것이 모든 has many 자식 관계 또는 귀하의 모델이 잘로드되었는지 확신 할 수는 없지만. 하지만 한 번해볼 수 있습니다. 이 유스 케이스에 대한 몇 가지 테스트를 직접 설정하고 무언가를 찾으면 대답을 업데이트하려고합니다.

0

이것은 나를 위해 일했습니다. 내 경우, 내 주요 모델은 App.Month이고, hasManyApp.Company 모델입니다. 이것은 내 견해로는 방법이었습니다.

dataChanged: function() { 
    if (this.get('controller.model.companies.isLoaded')) { 
     Ember.run.once(this, 'someFunction'); 
    } 
}.observes('controller.model.companies.isLoaded'), 
관련 문제