2013-03-07 5 views
3

하위 뷰 중 하나의 이미지가 완전히로드되어 dom에 표시되면 부모 뷰에 어떻게 통보합니까? 모든 이미지가로드 된 후 모든 어린이의 전체 높이를 측정해야합니다. . didInsertElement으로 측정하면 잘못된 높이가되므로 이미지 높이가없는 높이가 반환됩니다.하위 뷰의 이미지가 emberjs에로드되었음을 알리는 방법

그래서 이것은 내보기 구조와 같은 모습입니다 :

styledmediaitem가 서버에 올바른 경로와 함께 <img src=""/>를 출력하는 핸들 도우미가
{{#view App.ArtistBoxesView}} 
    {{#each artist in controller}} 
    {{#view App.ArtistBoxView}} 
     <div class="artist"> 
     <div class="thumb">{{styledmediaitem artist.thumb style="thumb"}}</div> 
     </div> 
    {{/view}} 
    {{/each}} 
{{/view}} 

.

ArtistBoxView의 이미지 (또는 모든 이미지가 더 좋을 때)가 완전히 사전로드 될 때 ArtistBoxesView에 알림을 보내고 싶습니다.

답변

3

보기의 didInsertElement fx에서 jQuery ImagesLoaded plugin을 사용해보십시오. 이 같은 일이 트릭을해야합니다 :

App.ArtistBoxView = Ember.View.extend({ 
    didInsertElement: function() { 
    this.$().imagesLoaded(function($images, $proper, $broken) { 
     console.log($images.length + ' images total have been loaded'); 
     console.log($proper.length + ' properly loaded images'); 
     console.log($broken.length + ' broken images'); 
    }); 
    } 
}); 
+0

'didInsertElement'와 같은 이벤트에 사용자 정의보기를 정의하지 않고 연결하는 방법이 있습니까? 예를 들어 컨트롤러 속성에 바인딩 된 img src 속성이있는 템플릿이있는 경우 imagesLoaded를 사용하여 컨트롤러 속성을 관찰하려면 어떻게해야합니까? 나는'$ ('mycontainer'). imagesLoaded (function() {/ * foo * /}'와 같은 것을 정의하려고 시도했지만 작동하지 않습니다. – kueda

관련 문제