簡體   English   中英

dijit樹JsonRest,新項目顯示在所有節點上

[英]dijit Tree JsonRest, new Items shows on all Nodes

我想使用dojo / data / JsonRest來顯示樹。 從服務器加載工作正常,但是如果我添加新項目,則新項目將顯示在每個開放式節點上。 向服務器發出請求,響應對我來說很好。 在服務器端,我將PHP與SlimFramwork一起使用

Javascript如下:

require([
     "dojo/parser",
     "dojo/_base/array",
     "dojo/on", 
     "dijit/registry",
     "dojo/store/JsonRest",
     "dojo/store/Observable",
    "dijit/Tree",
    "dijit/tree/ObjectStoreModel",

    "dijit/form/Button",
    "dojo/domReady!"
], function(parser, array, on, registry, JsonRest, Observable, Tree, ObjectStoreModel
        ){
    parser.parse();

    var reststore = new JsonRest({
        target: "Antrag/",
        getChildren: function(object){
            console.dir(object);
            return this.query({parent: object.id});
        }
    });
    var reststore=new Observable(reststore);



    var treeModel = new ObjectStoreModel({
        store: reststore,
        //labelAttr: "anzeige",
        query: {
            jahr: 2015,
            nummer: 1, 
            antArt: 1,
            kb: 58,
            antArt: 1,
            tree: true
        },
        mayHaveChildren: function(object){
            return true;
        },
        getLabel : function(item) {
            console.dir(item);
            console.log(item.typ);
            if(item!=null){
                //console.dir(item);
                if (item.typ == "KE") {
                    if (item.posten == "0") {
                        rueckgabe = "Keine Postennr";
                    } else {
                        rueckgabe = item.posten;
                    }
                } else if (item.typ == "KD" || item.typ == "NL" || item.typ == "ADDR") {
                    //console.log(item.typ+" "+item.Bezeichnung);
                    rueckgabe = item.Bezeichnung;
                } else if (item.typ.substring(0,6)=="antrag") {
                    this._antrag=item;
                    rueckgabe = item.anzeige;
                } else {
                    //console.log(item.typ+" "+item.anzeige);
                    rueckgabe = item.anzeige;
                }
                return rueckgabe;
            }else{
            return false;
            }

        },

    });
    var tree = new dijit.Tree({
        model : treeModel,
        autoExpand: true
        }, 'treeNode');

        tree.startup();

    on(registry.byId('butAdd'), "click", function(e){
        var selectedObject = tree.get("selectedItems")[0];
         var LS={
                 typ: "LS",
                 //antrag: selectedObject.id,
                 //antrag: this._antrag.id,
                 berechnung: selectedObject.id,
                 neu: true,
                 //parent: selectedObject.id
             };
        reststore.put({
            typ: "LS",
            //antrag: selectedObject.id,
            //antrag: this._antrag.id,
            berechnung: selectedObject.id,
            neu: true,
        }, {parent: selectedObject});

    })

});

啟動時加載的所有項目看起來都不錯。 一切都在正確的地方。

對新項目的請求(來自Web-Developer)如下所示:

berechnung:"Rech234647"
neu:true
typ:"LS"

服務器的響應是:

{"id":"LS234647_1","berechnungId":"234647","typ":"LS","parent":"Rech234647",anzeige":"Lieferschein 1"}

我不明白為什么新項目會顯示在所有打開的節點下。 如果我執行刪除操作,則會在樹中刪除新節點的所有表示形式。

目標是使用緩存存儲庫提供查詢存儲庫的所有方法。

require([
     "dojo/parser",
     "dojo/_base/array",
     "dojo/on", 
     "dijit/registry",
     "dojo/store/JsonRest",
     "dojo/store/Memory",
     "dojo/store/Observable",
     "dojo/store/Cache",
    "dijit/Tree",
    "dijit/tree/ObjectStoreModel",

    "dijit/form/Button",
    "dojo/domReady!"
], function(parser, array, on, registry, JsonRest, Memory, Observable, Cache, Tree, ObjectStoreModel
        ){
    parser.parse();

    var reststore1 = new JsonRest({
        target: "Antrag/",
        getChildren: function(object){
            console.dir(object);
            return this.query({parent: object.id});
        }
    });
    var memorystore=new Memory();

    var reststore=new Observable(new Cache(reststore1, memorystore));

    var treeModel = new ObjectStoreModel({
        store: reststore,
        query: {
            jahr: 2015,
            nummer: 1, 
            antArt: 1,
            kb: 58,
            antArt: 1,
            tree: true
        },
        mayHaveChildren: function(object){
            return true;
        },
        getLabel : function(item) {
            console.dir(item);
            console.log(item.typ);
            if(item!=null){
                if (item.typ == "KE") {
                    if (item.posten == "0") {
                        rueckgabe = "Keine Postennr";
                    } else {
                        rueckgabe = item.posten;
                    }
                } else if (item.typ == "KD" || item.typ == "NL" || item.typ == "ADDR") {
                    rueckgabe = item.Bezeichnung;
                } else if (item.typ.substring(0,6)=="antrag") {
                    this._antrag=item;
                    rueckgabe = item.anzeige;
                } else {
                    rueckgabe = item.anzeige;
                }
                return rueckgabe;
            }else{
            return false;
            }
        },

    });
    var tree = new dijit.Tree({
        model : treeModel,
        autoExpand: true
        }, 'treeNode');

        tree.startup();

    on(registry.byId('butAdd'), "click", function(e){
        var selectedObject = tree.get("selectedItems")[0];
         var LS={
                 typ: "LS",
                 berechnung: selectedObject.id,
                 neu: true,
             };
        reststore.put({
            typ: "LS",
            berechnung: selectedObject.id,
            neu: true,
        }, {parent: selectedObject});

    })

});

我將更新我的小提琴http://jsfiddle.net/jp14psez/31/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM