代码之家  ›  专栏  ›  技术社区  ›  Kitson

如何访问容器节点作为自定义Dojo/Dijit小部件的节点列表

  •  2
  • Kitson  · 技术社区  · 14 年前

    我正在尝试在Dojo中创建一个自定义模板小部件。我需要做一些操纵 containerNode 并希望将节点用作 dojo.NodeList . 我似乎无法让事情按我想要的方式运行。例如,我需要能够从 容器节点 . 如果我执行以下操作“添加”子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.NODLIST ?

    1 回复  |  直到 14 年前
        1
  •  3
  •   jrburke    14 年前

    dojo.nodelist只是一个修饰过的数组,所以在它上面使用push()方法只会将scrollPageItem.domNode推入dojo.nodelist的数组,但不会将其添加到dom中。另外,您可以使用dojo.query()并传递节点来创建一个新的节点列表,这样可以节省一些输入,并且不必担心忘记“new”:

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

    或者,更直接的非dojo.nodelist路径:

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