Javascript YUI3在选项卡视图don';不渲染

Javascript YUI3在选项卡视图don';不渲染,javascript,yui,yui3,tabview,yui-datatable,Javascript,Yui,Yui3,Tabview,Yui Datatable,我在YUI3选项卡视图中有一些选项卡。每个选项卡包含两个YUI3可滚动数据表。 数据表已创建但未呈现。我所能看到的只是每个数据表第一列的一部分 但是,如果我调整浏览器窗口的大小,我可以看到渲染的表。我怀疑每次切换到不同的选项卡时都必须以某种方式重新呈现表。我该怎么做 数据表是独立于选项卡/选项卡视图创建的 如果有任何帮助,我们将不胜感激。是的,滚动数据表在呈现时需要位于可见容器中,因为它们需要计算表中某些元素的大小,如果它们在隐藏选项卡中处于“显示:无”下,则无法计算这些元素的大小。避免这种情况

我在YUI3选项卡视图中有一些选项卡。每个选项卡包含两个YUI3可滚动数据表。 数据表已创建但未呈现。我所能看到的只是每个数据表第一列的一部分

但是,如果我调整浏览器窗口的大小,我可以看到渲染的表。我怀疑每次切换到不同的选项卡时都必须以某种方式重新呈现表。我该怎么做

数据表是独立于选项卡/选项卡视图创建的


如果有任何帮助,我们将不胜感激。

是的,滚动数据表在呈现时需要位于可见容器中,因为它们需要计算表中某些元素的大小,如果它们在隐藏选项卡中处于“显示:无”下,则无法计算这些元素的大小。避免这种情况的方法是等待显示保存datatable的选项卡。您可以通过收听选项卡的
selectedChange
事件的“after”阶段来完成此操作。例如:

tabview.item(1).after('selectedChange', function (e) {
  if (e.newVal) {
    table.render();
 }
});

下面是一个工作示例:

每个选项卡都包含多个表。我没有像您在示例中指定的那样的特定表实例。我能做些什么来克服这个问题?基本上,您需要获取所有表实例,并仅在
selectedChange
事件之后调用
render()
。您可以忽略
this.get('panelNode')
部分。为了以防万一,我把它从答案中删除了