extMvc 按需加载controller

Ext.define('AM.controller.Left', {

    extend : 'Ext.app.Controller',

    views  : ['public.Tob','public.Left','public.Right'],

    init   : function(){

   this.control({

           'panel > treepanel[iconCls="tree_item"]': {

                itemclick: this.putTabPanel

            }

        });

    },

    putTabPanel : function(view, record, element, index, eventObject,object) {

       var controller  = record.raw.controller;//获取需要加载的 controller

       var tabPanel   = Ext.getCmp("Right");

       var tab           = tabPanel.getComponent("tab_"+controller);

       if(!tab){

          this.addController(controller);

          tab = {

          id      : "tab_"+controller,

          closable: true,

          iconCls : "tabs",

          layout  : "fit",

          title   : record.raw.text,

          items   : Ext.widget(controller)

      };

      Ext.getCmp("Right").add(tab);

   }

   tabPanel.setActiveTab(tab.id); 

  },

  addController:function(controller)

  {

       var c = this.application.getController(controller);

       c.init(this.application);

  }

});


原理:

在控制器controller内绑定加载运行 其他 controller  的 事件

extjs   application.getController 方法载入 controller时会自动加载controller依赖的 view store model


点击左边的菜单项  会触发加载controller的函数  ( this.control 绑定) 

controller加载完成后 渲染新的tab 并添加到 管理首页TAB 右侧  

Ext.getCmp("Right").add(tab);

tabPanel.setActiveTab(tab.id); 


需要需要加载的控制器信息  放在  左侧 Ext.tree.Panel -> store -> children 子元素中的  controller 属性中

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值