0

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

4

1 回答 1

1

尝试设置

useStaticLayout: YES

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

或者,您可以根据内容计算视图的高度并调整视图的height属性(即this.adjust({height: 100})在视图内,只要内容发生变化)。这与动画非常吻合。不过,这可能是不可能的,具体取决于您的内容的性质。

作为旁注,如果您不进行拖放(可能不是,因为您的自定义视图不是集合),或者您不需要使用滚动条挂钩 SC 的事件(就像您想要 dnd东西)你可以overflow=auto在顶层添加一个div到你的视图中;你甚至不需要 SC 滚动视图。如果这样做,您将获得浏览器的本机滚动条,这可能会很好。

于 2011-12-10T23:01:58.777 回答