Sproutcore: использование пользовательского представления в качестве contentView в SC.ScrollView - PullRequest
0 голосов
/ 10 декабря 2011

Я использую SproutCore 1.x и пытаюсь использовать пользовательское представление в качестве contentView для SC.ScrollView.

Код выглядит примерно так:

SC.ScrollView.design({
 canScrollVertical:true,
 hasHorizontalScroller:false,
 contentView:SC.View.design({
      className:"myClass",
      render:function(context){
        var context = context.begin('div');
        context.push('LOTS OF THINGS HERE TAKING UP SOME LARGE ARBITRARY AMOUNT OF SPACE…');
        context.end();
      }
 })
})

Проблема в том, что, поскольку размер contentView является произвольным (то есть он динамически изменяется в зависимости от загруженной в него информации), представление прокруткиКажется, не знает, что нужно прокручивать.Я не могу установить высоту абсолютно, потому что я не знаю объем контента, который будет загружен в него.

Как мне указать представлению прокрутки динамически смотреть на высоту содержимого содержимого?

1 Ответ

1 голос
/ 11 декабря 2011

Попробуйте установить

useStaticLayout: YES

в вашем пользовательском представлении, и не устанавливайте высоту в макете представления. В качестве альтернативы, добавьте SC.FlowedLayout, если ваш пользовательский вид имеет дочерние представления. В основном я говорю использовать относительное позиционирование вместо абсолютного позиционирования.

В качестве альтернативы вы можете рассчитать, насколько высоко будет отображаться представление, на основе содержимого и настроить свойство height представления (т. Е. this.adjust({height: 100}) в представлении при каждом изменении содержимого). Это действительно хорошо сочетается с анимацией. Возможно, это будет невозможно, в зависимости от характера вашего контента.

В качестве примечания: если вы не выполняете перетаскивание (вероятно, нет, поскольку ваш пользовательский вид не является коллекцией), или вам не нужно подключаться к событиям SC с помощью скроллера (как вы это делаете, если хотите что-то добавить) вы можете просто добавить div с overflow=auto к вашему представлению на верхнем уровне; вам даже не нужно представление прокрутки SC. Если вы сделаете это, вы получите встроенную в браузер скроллер, что может быть хорошо.

...