【问题标题】:Adding new node to Dijit.Tree at a particular place in the tree在树中的特定位置向 Dijit.Tree 添加新节点
【发布时间】:2010-07-08 20:44:06
【问题描述】:

我在向 dijit.Tree 添加新的树节点时遇到了一个奇怪的错误。

var rawdata = [{
            label: 'Date',
            id: '1',
            children: [{
                label: 'Life',
                id: '1.1'
            }, {
                label: 'Liberty',
                id: '1.2'
            }]
        }, {
            label: 'Some links (note: the link is <b>not</b> clickable)',
            id: '2',
            children: [{
                id: '2.1',
                label: '<a href="http://dojotoolkit.org">Dojo Toolkit</a>'
            }, {
                id: '2.2',
                label: '<img src="http://dojofoundation.org/media/img/dojo.logo.png" alt="greatest ever" height="32px" />'
            }, {
                id: '2.3',
                label: '<a href="http://blog.nqzero.com">my blog</a>'
            }]
        }];

 var store = new dojo.data.ItemFileWriteStore({
                data: {
                    identifier: 'id',
                    label: 'label',
                    items: rawdata
                }
            });

为了将项目添加到树中,我正在使用以下内容:

store.newItem({id:'3', label:"New tree node label"});

但是,这似乎只适用于我第一次将项目添加到树中。尝试添加第二个项目时,我收到一个错误:ItemFileWriteStore 中的断言失败?

此外,目前该节点被添加到树的第一层。我怎样才能将它添加到其中一个子树中,比如第二棵 id:2 的树?

谢谢!

【问题讨论】:

    标签: dojo


    【解决方案1】:

    断言错误可能是由于 id 值冲突。第二项添加的 id 是否与第一项不同? 如果您将一个项目添加到商店,它将被添加到顶层,除非您将该项目添加到其中一个子数组 - 树必须知道将项目放在哪里,如果您将它添加到它假定的商店(正确) 它是顶级项目。如果您将新项添加为现有项的子项,那么树再次知道它应该去哪里。

    【讨论】:

      猜你喜欢
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多