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

发布于 2024-12-08 20:15:14 字数 343 浏览 1 评论 0原文

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

我的代码如下所示:

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

使用数据形式“myDataBlock”进行适当的替换需要什么?

干杯

is there a way to apply data to "regular" fields and subitems without using the an XTemplate?

My code looks like:

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

What would be required to have proper substitudes with the data form "myDataBlock" ?

Cheers

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

反目相谮 2024-12-15 20:15:14

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

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

查看Component的源码:

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

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

What do you mean by "regular" fields?

The data property of Panel is the initial data you want rendered, and it gets rendered using a template. You can specify a custom template for rendering if you wish, but either way it has to use a template so that ExtJS knows how to render your content.

Look at the source code for Component:

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

data: The initial set of data to apply to the tpl to update the
content area of the Component.

梦醒灬来后我 2024-12-15 20:15:14

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

If I understand correctly, you want to create the panel dynamically by a data block to set the properties like title etc...

If so, my suggestion is write your own panel class that extends Ext.Panel and do the things before its components is initiated.

Sample:

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

By the way, Template is only used to render the content of a panel in a plain way. In your case it's not proper to use Template because it has nothing to do with the config property nor the items of a panel.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文