EXTJs Добавить элементы на панель из динамического массива - PullRequest
1 голос
/ 29 августа 2011

У меня есть макет аккордеона, в котором есть 3 секции панели.

Я хочу использовать один из разделов для отображения месяцев за последние 90 дней. Это может быть между 3-5 месяцами. У меня есть функция, которая вычисляет эти месяцы и сохраняет их в массиве, похожем на:

months["May", "June, "July", "August"]

Исходя из значений в этом массиве, я хочу, чтобы они отображались в виде ссылок на панели аккордеона. Я понятия не имею, как динамически добавлять их как элементы в раздел аккордеона. Ссылки будут использоваться для загрузки сеток в Контейнер общего макета границы.

Это моя аккордеонная установка:

title        : 'Navigation',
              region       : 'west',
              collapsible  : false,           
              margins: '100 0 0 0',
              cmargins: '5 5 0 0',
               width: 175,
               minSize: 100,
               maxSize: 150,
               layout: {
                   type: 'accordion',
                   animate: true
               },
               items:[{ 
                        id:'main' 
                        ,title:'Summary'                        
                        ,collapsed:false
                        ,frame:true 
                        //captures the expand function to call the getgrids functionality
                        //don't want it to expand as it only displays 1 thing
                        ,expand : function(){                           
                            getGrids();
                        }
                    },
                    { 
                        id:'month' 
                        ,title:'Month View'                     
                        ,collapsed:false
                        ,frame:true
                        ,items:[{

                        }]
                    },{ 
                        id:'search' 
                        ,title:'Search' 
                        ,html: 'Search'
                        ,collapsed:true
                        ,frame:true                     
                    }]           
            },

1 Ответ

2 голосов
/ 29 августа 2011

Вы уверены, что хотите add ссылки как items? Нет встроенного виджета ссылок (по крайней мере, я не слышал ни о каком). Но add метод и items config ARE для виджетов. Поэтому, если вы хотите определить свой собственный виджет-ссылку, вы можете добавить его, используя такой код:

var monthsWidget = Ext.getCmp('month');
for (var i = 0; i < months.length; i++)
  monthsWidget.add(new YourLinkWidget(/*config*/));

Но создание нового виджета? ... для ссылки? ... не имеет смысла для меня. Почему бы просто не добавить элементы DOM к Ext.getCmp('month').body:

var monthsWidget = Ext.getCmp('month');
for (var i = 0; i < months.length; i++) {
  var link = Ext.createDom({
    tag: 'a',
    href: 'http://example.com'
  });

  Ext.fly(link).on('click', function(e) {
    // click handling here

    return false;
  });

  monthsWidget.body.appendChild(link);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...