javascript - ExtJS 如何使用 renderTo 配置将组件渲染到另一个特定容器

标签 javascript extjs model-view-controller extjs-mvc

我正在学习 ExtJS MVC

我想单击按钮然后在特定容器中创建一个面板。但我对 renderTo 配置感到困惑。我不知道如何渲染到右侧容器。

我的代码如下。 首先我在Viewport中定义了两个容器

Ext.define('MyTest.view.Viewport', {
  extend: 'Ext.container.Viewport',
  layout: 'border',

  requires: [
      'MyTest.view.button.TestButton',
  ],

  items: {
  xtype: 'container',
  itemId: 'main',
  region: 'center',
  border: false,
  layout: {
      type: 'hbox',
      pack: 'start',
      align: 'stretch'
  },
  items: [{
      xtype: 'container',
      itemId: 'left',
      style: 'background-color: black;',
      flex: 1,
      items: [{
          xtype: 'testbtn'
      }]
  }, {
      xtype: 'container',
      itemId: 'right',
      flex: 1
  }]
 }

});

View 中的按钮

  Ext.define('MyTest.view.button.TestButton', {
  extend: 'Ext.button.Button',
  alias: 'widget.testbtn',

  initComponent: function() {
    var me = this;
    Ext.apply(this, {
      height: 100,
      width: 100
    });
    me.callParent(arguments);
  }
});

Controller 中的点击事件

Ext.define('MyTest.controller.Button', {
    extend: 'Ext.app.Controller',
    views: ['MyTest.view.button.TestButton'],

  refs: [{
    ref: 'testbtn',
    selector: 'testbtn'
  }],

  init: function() {
    this.control({
      'testbtn': {
          click: this.test
      }
    });
  },

  test: function() {
    Ext.create('Ext.panel.Panel', {
        height: 200,
        width: 400,
        renderTo: Ext.getBody()
    });
  }
});

现在它可以渲染到正文了。如何在右侧容器中呈现它? 非常感谢

最佳答案

您可以使用 add 方法添加到 panelcontaineritems 数组。

例如:

Ext.ComponentQuery.query('#westPanel')[0].add({ html:'Some New Component Here.' });

下面是更深入示例的完整代码:

Ext.application({
    name : 'Fiddle',

    launch : function() {
        Ext.create('Ext.panel.Panel',{
            renderTo:Ext.getBody(),
            height:800,
            layout:'border',
            tbar:[{
                text:'Add Html To East Region',
                handler: function(btn){
                    Ext.ComponentQuery.query('#westPanel')[0].add({
                        html:'Oh, Hello.'
                    });
                }
            }],
            defaults:{
                xtype:'panel'
            },
            items:[{
                region:'center',
                html:'Center Panel'
            },{
                region:'west',
                width:400,
                itemId:'westPanel',
                items:[]
            }]
        });
    }
});

还有一个 fiddle for demonstration工作代码

关于javascript - ExtJS 如何使用 renderTo 配置将组件渲染到另一个特定容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30394075/

相关文章:

javascript - 从输入字段获取值

extjs - 根据内容自动调整 Ext JS 窗口大小,最大为 maxHeight

javascript - 在组合选择上具有动态显示/隐藏字段的 Extjs 表单

ExtJs 4 - 在同一网格中拖放

javascript - 哪种 JavaScript MVC/MVVM 对 SEO 友好?

javascript - 记录 Backbone.js 集合中的更改,我的集合未定义

javascript - Rails 将数据从 Controller 传递到 javascript

javascript - 等待异步函数

javascript - 为 'top' 和 'bottom' 提供与响应式设计中 'right' 和 'left' 的边距相同的边距

javascript - 检查模块是否已经加载到 Webpack 中?