我正在尝试获取作为组件呈现的div的大小。
Ext.define('EDS.view.selector.Container', {
extend: 'Ext.panel.Panel',
alias : 'widget.selectorcontainer',
layout: 'fit',
initComponent: function(){
this.items = [
{
xtype: 'tabpanel',
defaults: {
bodyPadding: 10
},
layout: 'fit',
items:[
{
title: 'Organization',
id: 'selector-organization',
tag: 'div',
html: 'div here',
height: '100%',
onRender: function(){
//// Render D3
// Selector
console.log("onRender");
console.log(this.height);
console.log(this.width);
var divId = Ext.getCmp('selector-organization').id + "-body";
var divHeight = Ext.get(divId).getHeight();
var divWidth = Ext.get(divId).getWidth();
console.log(divHeight);
console.log(divWidth);
renderSelectorOrgView(divId, divHeight, divWidth);
this.callParent();
},
......
......
这个onRender函数会中断正常的渲染过程。整个布局已损坏,div(#selector-organization-body)非常小。所以我想知道我是否以错误的方式压倒onRender。
答案 0 :(得分:1)
如果要覆盖所有Panel上的onRender功能,请执行以下操作:
Ext.override(Ext.tab.Panel, {
onRender: function() {
this.callParent();
console.log('do something');
}
});
答案 1 :(得分:0)
确实,那已经破了。问题是callParent
和此类方法仅适用于已通过Ext.define
的方法。
您可以通过使用当前范围和参数调用父方法来自己模拟callParent
。在您的情况下,请使用以下行替换this.callParent()
(顺便提到缺少参数):
Ext.panel.Panel.prototype.onRender.apply(this, arguments);