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方法
}

 

©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值