0

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

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

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

因此,我想如果我将所有 customWidget 实例添加到 Document Fragment 中,然后通过一次调用 addChild() 将其添加到 LayoutContainer 中,我可以节省一些毫秒。

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

我怎样才能实现我的目标?

4

1 回答 1

1

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

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

不过,我无法评论这将如何改变性能。

于 2013-09-06T14:33:46.687 回答