如何有效地将多个子Dijit Widget添加到LayoutContainer?

时间:2013-09-06 13:52:17

标签: javascript performance dojo addchild

我有一个关于Dojo 1.9 + Dijit Web应用程序的基本场景:

  1. 通过网络申请JSON数据
  2. 在成功回复中,我解析JSON数据并保存到应用程序模型
  3. 用户界面监视模型,当有数据时,它会创建新的自定义dijit/_WidgetBase实例以显示数据。
  4. 每个自定义Dijit小部件都通过dijit/layout/LayoutContainer
  5. 插入myLayoutContainer.addChild(customWidget);

    一切正常,但我想提高渲染性能。 我注意到dijit/layout/LayoutContainerdijit/_Container并且有自己的addChild(),它使用dojo/dom-construct.place()直接更改DOM。

    所以我想如果我将所有的customWidget实例添加到Document Fragment然后只需调用addChild()就可以将它添加到LayoutContainer中,我可以节省几毫秒。

    但是dijit/_Container.addChild需要类型为dijit/_WidgetBase的窗口小部件,因此文档片段方法不起作用。

    我怎样才能实现目标?

1 个答案:

答案 0 :(得分:1)

您可以创建一个“容器”窗口小部件,其中包含创建子窗口小部件并将其附加到自身的所有逻辑。然后只将单个“父”窗口小部件添加到LayoutContainer。如果你想做的更少,你可以使用ContentPane作为“容器”小部件。

var contentPane = new ContentPane();
//multiple times
contentPane.addChild(...)
/layoutContainer in the page flow
layoutContainer.addChild(contentPane);

我无法评论这会如何改变表现。