Sproutcore: использование пользовательского представления в качестве contentView в SC.ScrollView

Я использую 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 ответ

Решение

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

useStaticLayout: YES

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

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

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

Другие вопросы по тегам