【问题标题】:ExtJS - How to create a reusable function to avoid code redundancy?ExtJS - 如何创建可重用函数以避免代码冗余?
【发布时间】:2015-01-27 01:41:47
【问题描述】:

我没有重写大量代码,而是尝试将全局函数合并到我的工作中,但我无法让它工作。

说明:-

这就是以下代码的解释,当用户单击菜单项时,需要在 tabpanel xtype 组件内创建一个新选项卡。所以每次我创建一个新菜单时,只需再复制一次单击函数定义(显然在 Ext.create 函数中使用了它各自的视图名称)。

程序代码:-

     menu:[
            {
                text:'Menu1',
                listeners:{
                    click: function(c){
                        var nodeText = c.text,
                        tabs = Ext.getCmp('app-tab'),
                        tabBar = tabs.getTabBar(),
                        tabIndex;
                        for(var i = 0; i < tabBar.items.length; i++) {
                            if (tabBar.items.get(i).getText() === nodeText) {
                            tabIndex = i;
                            }
                        }    
                        if (Ext.isEmpty(tabIndex)) {                        
                        tabs.add(Ext.create('DemoApp.view.view1',{title:c.text,overflowY: 'scroll',closable:true}));
                        tabIndex = tabBar.items.length - 1;
                       }
                        tabs.setActiveTab(tabIndex);
                    }
                }
            },{
                text:'Menu2',
                listeners:{
                    click: function(c){
                        var nodeText = c.text,
                        tabs = Ext.getCmp('app-tab'),
                        tabBar = tabs.getTabBar(),
                        tabIndex;
                        for(var i = 0; i < tabBar.items.length; i++) {
                            if (tabBar.items.get(i).getText() === nodeText) {
                            tabIndex = i;
                            }
                        }    
                        if (Ext.isEmpty(tabIndex)) {                        
                        tabs.add(Ext.create('DemoApp.view.view2',{title:c.text,overflowY: 'scroll',closable:true}));
                        tabIndex = tabBar.items.length - 1 ;
                       }
                        tabs.setActiveTab(tabIndex);
                    }
                }                    
            }]

我只想在点击事件发生时调用类似下面的内容:

 click : createTab("DemoApp.view.view1")
 click : createTab("DemoApp.view.view2")
  //Global function
  view.createTab(function(view){
   // Code
  });

提前感谢您的帮助。

【问题讨论】:

    标签: javascript extjs


    【解决方案1】:

    当你这样做时,你正在调用该函数

    click: createTab();
    

    我认为你想要它分配一个功能来点击:

    click: function(){
      createTab("DemoApp.view.view1");
    }
    

    【讨论】:

      猜你喜欢
      • 2021-04-28
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多