代码之家  ›  专栏  ›  技术社区  ›  jl.gracia

动态创建外部面板

  •  1
  • jl.gracia  · 技术社区  · 8 年前

    在我的应用程序中,我收到了一些Json格式的对象。我想创建一个显示单个对象的面板。如果我收到2个对象,用他的内容创建2个面板,如果我收到100:100个面板。

    我试着用for with .add .doLayout 但从未显示任何面板。在我的控制台中显示了面板的创建,但从未渲染到我的主面板中 container . 我做错了什么?

    success : function(response) {
        var jsonResp = Ext.util.JSON
                .decode(response.responseText);
        //              Ext.Msg.alert("Info", "UserName from Server : " + jsonResp.message);
    
        // Limpiamos el array para tener solo las propiedades que se usarán
        jsonResp.forEach(function(currentItem) {
            delete currentItem["cls"];
            delete currentItem["estandar"];
            delete currentItem["iconCls"];
            delete currentItem["leaf"];
            delete currentItem["objetivo"];
            delete currentItem["observaciones"];
            delete currentItem["porcentaje"];
            delete currentItem["salvaguardas"];
            delete currentItem["tieneDocs"];
            delete currentItem["tipoNombre"];
            delete currentItem["responsable"];
            delete currentItem["responsableId"];
            delete currentItem["idReal"];
            delete currentItem["tipoNombre"];
            delete currentItem["tipo"];
            delete currentItem["calculado"];
            delete currentItem["text"];
        });
        var children = [];
        console.log(jsonResp);
        var sumarvariable = 0;
        //add children to panel at once
        for ( var i in jsonResp) {
            if (i < jsonResp)
                var panel = new Ext.Panel({
                    id : 'pregunta' + sumarvariable,
                    html : sumarvariable
    
                })
            console.log(panel)
            Ext.getCmp("contenedor").add(panel);
            Ext.getCmp("contenedor").doLayout();
            sumarvariable++;
        }
    },
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   S. Moreno    8 年前

    将其更改为并使用 .forEach jsonResp.forEach 在你的第二条评论下。这段代码创建一个面板并将其添加到“contenedor”中。

                //Create Panel with every object
                var i = 0;
                jsonResp.forEach(function(currentItem) {
                    i++;
                    var panel = new Ext.Panel({
                        id: 'jsonObject' + i,
                        html: 'Object' + i
                    })
                    //Add to your object "contenedor"
                    Ext.getCmp("contenedor").add(panel);
                });
                //Force reload and shows every panel
                Ext.getCmp("contenedor").doLayout();