我正在使用SproutCore 1.x并尝试将自定义视图用作SC.ScrollView的contentView。
代码看起来像这样:
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的大小是任意的(即它根据加载到其中的信息动态变化),滚动视图似乎不知道它需要滚动。我无法完全设置高度,因为我不知道将加载到其中的内容量。
如何告诉滚动视图动态查看contentView的高度?
答案 0 :(得分:1)
尝试设置
useStaticLayout: YES
,并且不要在视图的布局中设置高度。或者,如果您的自定义视图包含子视图,请在SC.FlowedLayout
中混合使用。基本上我说使用相对定位而不是绝对定位。
或者,您可以根据内容计算视图的高度,并在内容发生更改时调整视图的height
属性(即视图中的this.adjust({height: 100})
)。这与动画非常吻合。但是,根据内容的性质,可能无法实现。
作为旁注,如果你没有拖放(可能不是,因为你的自定义视图不是一个集合),或者你不需要用滚动条挂钩SC的事件(就像你做的那样)想要点东西)你可以在顶层的视图中添加一个带有overflow=auto
的div;你甚至不需要SC滚动视图。如果你这样做,你会得到浏览器的原生卷轴,这可能是好的。