如何通知父视图已在emberjs中加载子视图中的图像

时间:2013-03-07 14:35:17

标签: ember.js

当其中一个子视图中的图像完全加载并出现在dom中时,如何通知父视图?我需要在所有图像加载后测量所有孩子的完整身高。由于在didInsertElement中测量它是不正确的高度(它返回没有图像高度的高度)。

这就是我的视图结构的样子:

{{#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}}

其中styledmediaitem是一个把手帮助器,它输出一个<img src=""/>,其中包含正确的服务器路径。

ArtistBoxesView中的图片(甚至更好:当所有图片都已完全预装)时,我想在ArtistBoxView中收到通知。

1 个答案:

答案 0 :(得分: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' );
    });
  }
});