私は次のように3つのクラスを作成しました
- Ext.mine.TextParent-テキストフィールドからの継承
- Ext.mine.child.TextChildA-Ext.mine.TextParentから継承
- Ext.mine.child.TextChildB-Ext.mine.TextParentから継承
このように、子Aクラスと子Bクラスはどちらも親クラスから継承しているため、兄弟です。
defalult値がであるtestConfigとして親クラスに新しいconfigプロパティを追加しました{}
。
of Child Aクラスで、initComponent
このtestConfigに新しいkey:valueを-として割り当てました。me.testConfig.childAKey='Child A Value';
これで、3つのテキストフィールドすべてを使用するフォームがあり、textChildBタイプのアフターレンダリングで、そのtestConfigの値を出力しています。
testConfigの値は子Bで変更されないため、空白のオブジェクトが出力されることが期待されます(このtestConfigの親のデフォルト値は空白のオブジェクトであるため)。
ただし、実際には子Aの値を出力します。
子Aと子Bは兄弟ですが、子Aの価値はどのようにして子Bにもたらされるのでしょうか。
誰かがこれの背後にある理由が何である可能性があるかを教えてもらえますか?
以下はテストケースです。
<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>