Создайте Ext.panel динамически

1

В моем приложении я получаю некоторые объекты в Json. Я хочу создать одну панель, которая показывает один объект. Если я получу 2 объекта, создайте 2 панели с его содержимым, и если я получу 100: 100 панелей.

Я попытался использовать a для с .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++;
    }
},
  • 0
    Какой у Вас вопрос ?
  • 1
    Привет @ Винсент. Я отредактировал свой вопрос, чтобы объяснить лучше. Спасибо за Ваш интерес
Теги:
extjs

1 ответ

0
Лучший ответ

Измените это и используйте .forEach как вы используете в jsonResp.forEach под вторым комментарием. Этот код создает одну панель и добавляет ее в ваш "коннектор".

            //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();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню