假設我們定義了一個自定義類,希望此類得到一個主鍵時,給它的子控件動態設置itemId
Ext.define('A',{
extend:'Ext.Container',
xtype:'a',
config:{
key:null//自定義了一個配置項
},
items:[
{
xtype:'component',//一個子控件
refrence:'A'
},
{
xtype:'component',//一個子控件
refrence:'B'
}
],
//當更新容器的 key時就更新 判斷該容器的子控件實例化完沒
updateKey(key) {
const me = this;
if(!key)return;
if(me.getInnerItems().length>0) console.log('子控件存在');
else console.log('子控件不存在');
}
});
我們先直接在其實例化時就傳入key:
Ext.widget('a',{key:1})
此時控制檯會輸出:
子控件不存在
而如果我們先實例化一下,再傳入key
var a = Ext.widget('a');
a.setKey(1);
此時控制檯會輸出:
子控件存在
而如果我們想 對於自定義的類,聲明的config配置項裏的內容,即使是在其初始化時,也可以調用相應的updateXX方法;
就要藉助 isConfiguring
在調用initConfig期間,此屬性設置爲true。
當其在初始化相關內部配置(像定義類裏的items配置項,viewModel配置項等)時,該屬性爲真。
使用參考如下:
updateKey(key) {
if(!this.isConfiguring) {//藉助檢查是否正在初始化屬性
// 一般 邏輯放這裏
}
},
initialize() {
this.callParent();
this.updateKey(this.getKey());//初始化後 在調用相關的updateKey方法
}