在道场1.6创建分类树?(Creating sorted tree in DOJO 1.6?)

2019-10-30 17:21发布

我新学Dojo和尝试使用样本代码,通过它来学习。 使用Dojo 1.6

随着示例代码的帮助下,我创建了一个树

现在我想申请根,也对孩子进行排序。 随着这种帮助示例代码,我改变了代码

输出未排序n,而是根文件夹已经改变了自己的立场和儿童被删除。

PLZ帮我解决这个问题。

我的代码:

dojo.require("dojo.data.ItemFileWriteStore");
dojo.require("dojo.data.ItemFileReadStore");
dojo.require("dijit.tree.ForestStoreModel");
dojo.require("dijit.Tree");
var data = [ { id: 1, name: "answerTypeLabel",                 type:'scenario',    children:[{_reference: 2}]},
                       { id: 2, name: "acceptRequestLabel",             type:'paragraph',   data: "acceptRequestLabel"},
                       { id: 3, name: "rejectRequestLabel",             type:'scenario',    children:[{_reference: 5},{_reference: 6}]},
                       { id: 4, name: "MoreInformationLabel",       type:'scenario',    children:[{_reference: 7},{_reference: 8}]},
                       { id: 5, name: "rejectRequestStatusLabel",   type:'paragraph',   data: "rejectRequestStatusLabel"},
                       { id: 6, name: "rejectRequestNotCoveredLabel", type:'paragraph',     data: "rejectRequestNotCoveredLabel" },
                       { id: 7, name: "MoreInformationDocumentLabel", type:'paragraph',     data: "MoreInformationDocumentLabel"},
                       { id: 8, name: "MoreInformationDataLabel",   type:'paragraph',   data: "MoreInformationDataLabel"}
                     ];
dojo.addOnLoad(function() {
    var sortableStore = new dojo.data.ItemFileReadStore({
        data: {
              identifier: 'id',
                        label: 'name',
                        items: data 
        }
    });
    var model = new dijit.tree.ForestStoreModel({
        rootLabel: 'Names',
        store: new dojo.data.ItemFileWriteStore({
            data: {
                identifier: 'id',
                items: [],
                label: 'name'
            }
        }) // blank itemsstore
    })
    var tree = new dijit.Tree({
        model: model,
        updateItems: function(items) {
            var self = this;
            console.log('pre', this.model.root.children);

            dojo.forEach(items, function(newItem) {
                console.log('add', newItem);
                try {
                    self.model.store.newItem({
                        id: sortableStore.getValue(newItem, 'id'),
                        name: sortableStore.getValue(newItem, 'name'),
                        type: sortableStore.getValue(newItem, 'type'),
                        data: sortableStore.getValue(newItem, 'data'),

                    });
                } catch (e) {
                    console.log(e);
                }
            });
            console.log('post', this.model.root.children);
            console.log("children: ", this.rootNode.getChildren());

        },
    });
    tree.placeAt(dojo.body());
    sortableStore.fetch({
        query: {
            type:'scenario' 
        },
        sort: [{
            attribute: "name"}],
        onComplete: function(items) {
            console.log(items, 'sorted');
            tree.updateItems(items);

        }
    })
});

输出:

Answer 1:

在“名称”从你的起源,设置“rootLabel”。

顺便说一句,小提琴有修改和仅仅是一个糊箱状特征:)

您需要使用的树模型pasteItem插入引用的项目(以下简称“儿”每个“的newitem”的属性)。

另外,还有另一种方法,如果你摆脱你的数据的“_reference”结构。 请参阅: http://jsfiddle.net/GHFdA/1/



文章来源: Creating sorted tree in DOJO 1.6?
标签: dojo