Collections dijit.WidgetSet domNode

Collections dijit.WidgetSet domNode,collections,dojo,widget,Collections,Dojo,Widget,我的自定义小部件有一个基于AJAX响应构建的子小部件的集合。因此,我需要维护子小部件的数组,并将这些小部件的domNode附加到其父小部件的domNode 我可以使用dijit.WidgetSet收集子小部件,但是没有dijit.WidgetSet.domNodes()方法来获取所有小部件的domNodes。另外,dijit.WidgetSet不负责子节点在其父DomNode 有没有其他的课程可以做同样的事情?e、 g.将dijit.WidgetSet子类化以处理附加到父domNode的问题会是

我的自定义小部件有一个基于AJAX响应构建的子小部件的集合。因此,我需要维护子小部件的
数组
,并将这些小部件的
domNode
附加到其父小部件的
domNode

我可以使用
dijit.WidgetSet
收集
子小部件
,但是没有
dijit.WidgetSet.domNodes()
方法来获取所有小部件的domNodes。另外,
dijit.WidgetSet
不负责子节点在其
父DomNode


有没有其他的
课程
可以做同样的事情?e、 g.将dijit.WidgetSet子类化以处理附加到父domNode的问题会是轮子的一种重新发明吗

如果您使用dijit扩展父容器。\u您可以通过调用
parent.getChildren()
来获得widgetset。小部件返回的顺序与它们添加到父级(
parent.addChild()
)的顺序相同,而不是由DOM同级成员返回。但是,一旦您使用了解析器,这个ofc将是相同的。嗯,任何小部件都会实现getChildren,但_容器类的区别在于,
addChild:function(/*dijit.\u widget*/widget,/*int?*/insertIndex)
removeChild:function(/*widget | int*/widget)
函数非常漂亮。如果在添加子项时放置insertIndex,则兄弟姐妹关系是可以管理的

考虑到domNodes,使用dijit,我们将“超越”DOM,转而在小部件层中工作——这只是一个JS包装。dojo中不存在可链接函数“.domNodes()”,您需要调用类似于以下内容的函数:

parent.getChildren().forEach(function(childWidget) {
  var domNode = childWidget.domNode;
  ...
}); 

// this would get nowhere as the return child-set is merely a 'stupid' array
parent.getChildren().set("attribute", "value");
下面是一个用于上述foreach的可爱的小包装器,使用dijit/map

// retreives an array of the actual domNodes of widgetset
dijit.registry.map(function(widget){return widget.domNode;}).forEach(
    // uses hitch to allow passing parameters without wrapping in new function
    dojo.hitch( 
        window,            // on random scope
        dojo.addClass,     // calling function
        "imTheChildDomNode"// arguments[0]
    )
);