我正在尝试在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
?
答案 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);