ExtJs config 配置項 set訪問器 優先於控件實例化?

假設我們定義了一個自定義類,希望此類得到一個主鍵時,給它的子控件動態設置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方法
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章