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. Если вы сделаете это, вы получите встроенную в браузер скроллер, что может быть хорошо.