2014-02-11 5 views
1

В соответствии с README я должен иметь возможность изменять ширину и высоту Ember.ListView, но я не могу найти способ заставить его работать.Изменение высоты и ширины Ember.ListView во время выполнения

Когда я увеличиваю размеры ListView Я ожидаю, что новые элементы будут созданы и добавлены в список, но этого не произойдет.

У кого-нибудь есть рабочий пример для этого?

UPDATE:

Смотрите эту fiddle для образца кода.

+0

могли бы вы предоставить jsFiddle? – chopper

+0

Извините за это. Образец включен сейчас. – bazzel

ответ

1

Я решил его ...

Смотрите эту fiddle для обновленного образца.

я первоначально определен метод didInsertElement на ListView привязать к событию изменения размера окна и обновить ListItem «ширину и высоту s, но это, как я, по-видимому перегрузил ListItem» собственного didInsertElement метода S:

App.ListView = Ember.ListView.extend({ 
     height: 500, 
     width: 500, 
     elementWidth: 80, 
     rowHeight: 20, 
     itemViewClass: Ember.ListItemView.extend({ 
      templateName: 'row_item' 
     }), 
     adjustLayout: function(w, h) { 
      console.log(w, h); 
      this.set('width', w); 
      this.set('height', h); 
     }, 
     didInsertElement: function() { 
      view = this; 
      $(window).resize(function() { 
       width = $('body').width(); 
       height = $('body').height(); 
       view.adjustLayout(width, height); 
      }); 
     } 

используя .on('didInsertElement') код работает:

App.ListView = Ember.ListView.extend({ 
     height: 500, 
     width: 500, 
     elementWidth: 80, 
     rowHeight: 20, 
     itemViewClass: Ember.ListItemView.extend({ 
      templateName: 'row_item' 
     }), 
     adjustLayout: function(w, h) { 
      console.log(w, h); 
      this.set('width', w); 
      this.set('height', h); 
     }, 
     observeResize: function() { 
      view = this; 
      $(window).resize(function() { 
       width = $('body').width(); 
       height = $('body').height(); 
       view.adjustLayout(width, height); 
      }); 
     }.on('didInsertElement') 
+0

Вы должны обернуть код, обрабатывающий событие изменения размера в 'Ember.run', чтобы избежать автозапуска. –

+0

Спасибо Люку, я превратил его в mixin https://gist.github.com/bazzel/8962240/raw/4cf738cdce5ecbe04c217a2a81aaed5bd1bcc7c7/ember-list-view.js.coffee – bazzel

Смежные вопросы