在树中的特定位置向Dijit.Tree添加新节点

时间:2010-07-08 20:44:06

标签: dojo

在向dijit.Tree添加新的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的树?

谢谢!

1 个答案:

答案 0 :(得分:2)

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