netemp
5 Jul 2012, 11:13 PM
As a test case I have extended the textfield and created a class - Ext.mine.TextParent with xtype as textParent.
This class is further being extended by two other classes - Ext.mine.child.TextChildA (xtype - textChildA) and Ext.mine.child.TextChildB (xtype - textChild).
I have added a new config property to parent class as testConfig with defalult value being {}.
In the initComponent of Child A class, I have assigned a new key:value to this testConfig as - me.testConfig.childAKey='Child A Value';
Now, there is a form which is using all the three textfields and in the afterrender of the textChildB type, I am printing the value of its testConfig.
As the value of testConfig is not modified in Child B, thus, it is expected that this should print blank object (because value of testConfig is blank in the parent).
But it actually prints the values from Child A.
Child A and Child B are siblings, thus, how can the value from Child A come to Child B?
Is this a bug or are we doing something wrong?
Below is the test case:
<html>
<head>
<title>Inheritance Test</title>
<link rel='stylesheet' href='resources/extjs/resources/css/ext-all.css' />
<script type='text/javascript' src='resources/extjs/ext-all-dev.js'></script>
<script type='text/javascript'>
//Defining the Parent below
Ext.define('Ext.mine.TextParent', {
extend: 'Ext.form.field.Text',
alias: 'widget.textParent',
testConfig:{}
});
//Defining the Child A below
Ext.define('Ext.mine.child.TextChildA', {
extend: 'Ext.mine.TextParent',
alias: 'widget.textChildA',
initComponent:function(){
var me = this;
me.testConfig.childAKey = 'Child A Value';//Adding the key value to Child A
me.callParent();
}
});
//Defining the Child B below
Ext.define('Ext.mine.child.TextChildB', {
extend: 'Ext.mine.TextParent',
alias: 'widget.textChildB'
});
</script>
<script type='text/javascript'>
Ext.onReady(function(){
Ext.create('Ext.form.Panel', {
title: 'Basic Form',
renderTo: Ext.getBody(),
width: 350,
url: 'save-form.php',
items: [{
xtype: 'textParent',//Creating field for Parent
fieldLabel: 'Text Parent',
flex:1
},{
xtype: 'textChildA',//Creating field for Child A
fieldLabel: 'Text Child A',
flex:1
},{
xtype: 'textChildB',//Creating field for Child B
fieldLabel: 'Text Child B',
flex:1,
listeners:{
afterrender:function(){
/*
**Printing to console the value of testConfig for Child B
**Instead of giving a blank object, it is giving the values of Child A - childKey:Child A Value
**How the value from a sibling got associated with another one?
*/
console.log(this.testConfig);
}
}
}]
});
});
</script>
</head>
<body>
</body>
</html>
Could anyone guide at this?
Thanks for any help in advance.
This class is further being extended by two other classes - Ext.mine.child.TextChildA (xtype - textChildA) and Ext.mine.child.TextChildB (xtype - textChild).
I have added a new config property to parent class as testConfig with defalult value being {}.
In the initComponent of Child A class, I have assigned a new key:value to this testConfig as - me.testConfig.childAKey='Child A Value';
Now, there is a form which is using all the three textfields and in the afterrender of the textChildB type, I am printing the value of its testConfig.
As the value of testConfig is not modified in Child B, thus, it is expected that this should print blank object (because value of testConfig is blank in the parent).
But it actually prints the values from Child A.
Child A and Child B are siblings, thus, how can the value from Child A come to Child B?
Is this a bug or are we doing something wrong?
Below is the test case:
<html>
<head>
<title>Inheritance Test</title>
<link rel='stylesheet' href='resources/extjs/resources/css/ext-all.css' />
<script type='text/javascript' src='resources/extjs/ext-all-dev.js'></script>
<script type='text/javascript'>
//Defining the Parent below
Ext.define('Ext.mine.TextParent', {
extend: 'Ext.form.field.Text',
alias: 'widget.textParent',
testConfig:{}
});
//Defining the Child A below
Ext.define('Ext.mine.child.TextChildA', {
extend: 'Ext.mine.TextParent',
alias: 'widget.textChildA',
initComponent:function(){
var me = this;
me.testConfig.childAKey = 'Child A Value';//Adding the key value to Child A
me.callParent();
}
});
//Defining the Child B below
Ext.define('Ext.mine.child.TextChildB', {
extend: 'Ext.mine.TextParent',
alias: 'widget.textChildB'
});
</script>
<script type='text/javascript'>
Ext.onReady(function(){
Ext.create('Ext.form.Panel', {
title: 'Basic Form',
renderTo: Ext.getBody(),
width: 350,
url: 'save-form.php',
items: [{
xtype: 'textParent',//Creating field for Parent
fieldLabel: 'Text Parent',
flex:1
},{
xtype: 'textChildA',//Creating field for Child A
fieldLabel: 'Text Child A',
flex:1
},{
xtype: 'textChildB',//Creating field for Child B
fieldLabel: 'Text Child B',
flex:1,
listeners:{
afterrender:function(){
/*
**Printing to console the value of testConfig for Child B
**Instead of giving a blank object, it is giving the values of Child A - childKey:Child A Value
**How the value from a sibling got associated with another one?
*/
console.log(this.testConfig);
}
}
}]
});
});
</script>
</head>
<body>
</body>
</html>
Could anyone guide at this?
Thanks for any help in advance.