没有XTemplate的Ext.Panel中的数据?

时间:2011-10-05 15:46:22

标签: extjs extjs3

有没有办法在不使用XTemplate的情况下将数据应用于“常规”字段和子项?

我的代码如下:

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

使用数据格式“myDataBlock”获得适当的偏好需要什么?

干杯

2 个答案:

答案 0 :(得分:0)

“常规”字段是什么意思?

Panel的data属性是您想要渲染的初始数据,并使用模板进行渲染。如果您愿意,可以指定自定义模板进行渲染,但无论哪种方式,都必须使用模板,以便ExtJS知道如何渲染您的内容。

查看Component的源代码:

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

数据:应用于tpl更新的初始数据集   组件的内容区域。

答案 1 :(得分:0)

如果我理解正确,您希望通过数据块动态创建面板以设置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仅用于以简单的方式呈现面板的内容。在你的情况下,使用Template是不合适的,因为它与config属性和面板的项目无关。