如何将Container Node作为自定义dojo / dijit Widget的节点列表进行访问

时间:2010-02-10 15:20:56

标签: dom dojo

我正在尝试在dojo中创建自定义模板化小部件。我需要对模板的containerNode进行一些操作,并希望将节点用作dojo.NodeList。我似乎无法让事情像我想要的那样发挥作用。例如,我需要能够从containerNode“推送/弹出/移位/取消移动”儿童。如果我执行以下操作来“添加”子DOM节点它可以工作:

var scrollPageItem = new _ScrollPageItem({...},"...");
this.containerNode.appendChild(scrollPageItem.domNode);

但这似乎不起作用:

var scrollPageItem = new _ScrollPageItem({...},"...");
var nl = new dojo.NodeList(this.containerNode);
nl.push(scrollPageItem.domNode);

这两点都没有:

var scrollPageItem = new _ScrollPageItem({...},"...");
var nl = new dojo.NodeList(this.containerNode.children);
nl.push(scrollPageItem.domNode);

在其他两种情况下,nl.push似乎什么都不做,浏览DOM似乎没有添加任何东西。有关如何将dojoAttachPoint节点内部转换为dojo.NodeList

的任何想法

1 个答案:

答案 0 :(得分:3)

dojo.NodeList只是一个装饰数组,因此使用push()方法只需将scrollPageItem.domNode推送到dojo.NodeList的数组中,但不会将其添加到DOM中。此外,您可以使用dojo.query()并传递节点来创建新的NodeList,它可以节省一些打字,您不必担心忘记“新”:

dojo.query(this.containerNode).addContent(scrollPageItem.domNode);

或者,更直接的非dojo.NodeList路由:

dojo.place(scrollPageItem.domNode, this.containerNode);