Sproutcore:在SC.ScrollView中使用自定义视图作为contentView

时间:2011-12-10 00:26:39

标签: scrollview render sproutcore custom-view sproutcore-views

我正在使用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的高度?

1 个答案:

答案 0 :(得分:1)

尝试设置

useStaticLayout: YES

在自定义视图中

,并且不要在视图的布局中设置高度。或者,如果您的自定义视图包含子视图,请在SC.FlowedLayout中混合使用。基本上我说使用相对定位而不是绝对定位。

或者,您可以根据内容计算视图的高度,并在内容发生更改时调整视图的height属性(即视图中的this.adjust({height: 100}))。这与动画非常吻合。但是,根据内容的性质,可能无法实现。

作为旁注,如果你没有拖放(可能不是,因为你的自定义视图不是一个集合),或者你不需要用滚动条挂钩SC的事件(就像你做的那样)想要点东西)你可以在顶层的视图中添加一个带有overflow=auto的div;你甚至不需要SC滚动视图。如果你这样做,你会得到浏览器的原生卷轴,这可能是好的。