ExtJs4问题笔记(二) Mvc模式Controller按需加载


开始为了这个问题查阅了很多文章,有些文章的实现过于复杂,比如多app文件夹的形式。其实我们来看Ext.create(参数)这个方法,其实他本身就提供了根据类名动态生成实现类的功能。比如我有一个Controller叫 core.role.controller.Role 那么我只需要Ext.create('core.role.controller.Role')就可以创建对象。也就实现了按需加载。当然这样也存在一个小问题。

在MVC的设计理念中Controller中主要是实现对个组件的监听工作,比如我们去监听主页面的点击,正常模式中会把监听写在组件中listener,在MVC模式中我们是通过Controller来监听点击事件。那么当我们点击左侧菜单,界面在右侧显示的时候我们会绑定右侧界面中各组件的监听事件。当我们关闭右侧页面时,组件会自动销毁,但是监听仍然存在,当我们在此打开此页面时,我们会发现我们的监听绑定了2次。下面附上此种问题的解决方案。

Ext.define('core.permission.controller.Permission', {
    extend: 'Ext.app.Controller',
    statics: {
        needInit:true
    },
    init: function () {
        this.show(); //show方法为初始化页面的方法
        if (core.permission.controller.Permission.needInit) {
            this.control({
                'permissionList button[itemId=btnAdd]': {
                    click: this.addClick //addClick 方法省略
                },
                'permissionList button[itemId=btnEdit]': {
                    click: this.editClick //editClick 方法省略
                }
            })
            core.permission.controller.Permission.needInit = false;
        }
    }
})

我们定义一个静态方法,通过这个静态方法来监听是否是第一次new,如果是则绑定监听,如果不是则跳过监听

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值