Данные в Ext.Panel без XTemplate? - PullRequest
       1

Данные в Ext.Panel без XTemplate?

0 голосов
/ 05 октября 2011

есть ли способ применить данные к «обычным» полям и подпунктам без использования XTemplate?

Мой код выглядит так:

var panel = new Ext.Panel({
   data: myDataBlock
   defaults: {
      data: myDataBlock
   }
   title: 'Name: {name}'
   items: [{
       xtype: 'panel',
       title: 'more: {moreData}'
   }]
});

Что требуется для правильногозаменяет на форму данных "myDataBlock"?

Приветствия

Ответы [ 2 ]

0 голосов
/ 17 января 2012

Если я правильно понимаю, вы хотите динамически создать панель с помощью блока данных, чтобы задать свойства, такие как title и т. Д.

Если это так, я предлагаю написать свой собственный класс панели, который расширяетExt.Panel и делайте вещи до того, как его компоненты будут инициированы.

Пример:

//Define your own panel class
MyPanel = Ext.extend(Ext.Panel, {
  width: 300,
  height: 150,
  initComponent: function(){
     if(this.data){
        Ext.apply(this,{
           title: 'Name: '+ this.data.title,
           items: [
              {
                 xtype: 'panel',
                 html: 'more: '+ this.data.moreData
              }
           ]
        });
     }
     MyPanel.superclass.initComponent.call(this);
  }
});

//Use the customized panel
var p = new MyPanel({
   data: {title:'my title', moreData: 'other data'},
   renderTo: Ext.getBody()
});

Кстати, Шаблон используется только для простого отображения содержимого панели.В вашем случае не следует использовать Template, потому что он не имеет ничего общего ни со свойством config, ни с элементами панели.

0 голосов
/ 05 октября 2011

Что вы подразумеваете под "обычными" полями?

Свойство Panel data - это исходные данные, которые вы хотите отобразить, и они отображаются с использованием шаблона. При желании вы можете указать собственный шаблон для рендеринга, но в любом случае он должен использовать шаблон, чтобы ExtJS знал, как отображать ваш контент.

Посмотрите на исходный код Component:

if (this.data) {
    this.tpl[this.tplWriteMode](contentTarget, this.data);
    delete this.data;
}

data : исходный набор данных, применяемый к tpl для обновления область содержимого Компонента.

...