[ExtJS] viewcha 缓存实例

本文介绍了在ExtJS开发中如何利用静态类进行视图缓存,以提高性能并避免内存泄漏。通过继承ViewCache类创建公共帮助类,使用自定义key存储和检索控件实例。同时讨论了遇到的session错误问题,原因是未正确销毁缓存的实例,解决方案是在自定义的destroy方法中调用me.callParent(arguments)确保销毁流程完整。

在使用Extjs 开发时,可以用一静态类,将某些实例控件缓存下来:

一个静态类(公有帮助类),通过继承ViewCache类 ,来缓存实例

Ext.define('TD.util.Helper', {
    alternateClassName: 'TDHelper',//自定义静态类名
    mixins: ['ViewCache'], // 管理/缓存 界面实例

    singleton: true,

    /**
     * 获取页面
     * @param {*} key
     * @param {*} xtypeName
     */
    getView(key, xtypeName) {
        const me = this;
        let view = me.getFromViewCache(key);//通过一个key 值缓存独特实例
        if (!view) {
            view = Ext.create({
                xtype: xtypeName
            });
            me.addToViewCache(key, view);//加到实例中
        }

        return view;
    },
});

 一个实例控件:

Ext.define('TD.view.DemoWin', {
    extend: 'Ext.Dialog',
    xtype:'td_demowin',
    referenceHolder: true,
    closable: true,
    closeAction: 'destroy',//关闭即销毁
    hidden: true,
    maxWidth: '100%',
    maxHeight: '100%',
    width:600,
    height:400,
    defaultListenerScope: true,//作用域限定在界面内,省去 viewController
    destroy(){
        const me = this;
        //复写destroy方法 
       Ext.getApplication().fireEvent('quanju');//例如在销毁时 发出一个全局事件
    }
});

通过静态类缓存

let demowin = TDHelper.getView('tdDemoWin','td_demowin');//创建一个实例
demowin.show();// 让实例出现

 其中 viewcache  可通过一个key值 来找到相应的实例控件,就是调用getFromViewCache(自定义key名)方法

而添加到缓存中,使用的是addToViewCache(自定义key名,控件实例)

自定义的key名 类似于 控件的一个id

统一清除实例控件,防止泄露

TDHelper.destroyAllViewCache()

如若在使用过程 遇到下面这种 session报错:

是因为部分viewcache里的实例,应该被销毁,但是没销毁,造成实例的方法还在执行,但是部分东西找不到了。

大多数是因为 复写了实例控件的 destroy方法,就像开头那个控件一样

解决办法:

复写的destroy方法里,加上 me.callParent(arguments)

 destroy() {
      const me = this;
       me.callParent(arguments);//*****重要****
//复写的逻辑代码
}

 

内容概要:本文介绍了基于ExtendSim软件构建的儿童保护模拟分析模型,旨在通过仿真技术评估不同工作包(Work Package)对儿童保护系统长期影响的效果。该模型自2014年起由澳大利亚某政府部门与Insight Acumen合作开发,用于支持政策决策,特别是在区域层面测试干预措施的实施效果。模型利用约数十万条历史数据自动生成概率分布(PD),模拟儿童在不同年龄、原住民身份、地区、初次或再次进入系统等条件下的路径发展。随着时间演进,模型经历了多次结构优化,从最初的7个区域调整为5个再扩展至6个,并实现了高度自动化,能够自动导入Excel原始数据并借助ModL编程语言完成初始化计算,显著提升了效率。目前模型每年提供74项关键指标输出,所有分析均由部门内部人员操作执行,大幅节省了人力成本并提高了测试与分析的有效性。; 适合人群:具备数据分析、系统建模背景,从事公共政策研究、社会服务管理或儿童福利领域的政府工作人员及咨询顾问。; 使用场景及目标:①评估儿童保护政策在不同区域和时间段的实施效果;②优化资源配置与工作包部署策略;③预测未来10-15年儿童保护系统的负荷与发展趋势;④提升政府部门在复杂社会系统中的决策科学性与响应效率。; 阅读建议:本模型强调实际应用与持续迭代,建议读者关注其数据自动化处理机制、ModL编程实现方式以及多维度概率建模方法,在复用时结合本地化数据结构进行适配与验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

29号同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值