修改Extjs的findByType方法,弥补其不足

昨天我自己想在前台(用Extjs)做按钮权限控制,前台按钮权限控制本身安全性不好,这个暂不讨论。

Ext.Container 的 findByType 方法并不能获取容器下级的所有的任意类型的控件,比如获取按钮,它不能获取 panel 的 toolbar 里面的按钮,所以我想自己做一个findByType方法。

获取容器下的所有按钮的方法如下,获取容器下的其他控件可以通过类似的方法实现。

//命名空间 及全局变量定义
Ext.ns("TT.util");
Ext.ns("TT.data");
TT.data.btnArray = null;


//获取当前容器下所有按钮
TT.util.findBtnBase = function( c ){
	
	var array = [];
	if( c.toolbars ){
		Ext.each(c.toolbars, function(i){
			var j = i.items.items;
			Ext.each(j,function(k){
				if( k.xtype=='button' || k.type=='button'){
					array.push(k);
				}
			})
		});
	}
	
	if( c.items && c.items.items ){
		var i = c.items.items;
		Ext.each(i,function(j){
			if(j.xtype=='button' || j.type=='button'){
				array.push(j);
			}
		});
	}
	
	return array;
	
}

//获取当前容器,以及下级所有容器的所有按钮(递归)
TT.util.findBtn = function( c ){
	
	//如果c不是叶子节点
	if( (c.items && c.items.items) || (c.toolbars) ){
		var btnArray = TT.util.findBtnBase(c);
		TT.util.pushArray(btnArray, TT.data.btnArray);
		if(c.items && c.items.items){
			Ext.each( c.items.items, function(i){
				TT.util.findBtn(i);
			});
		}
	}	
}

//将 src 数组的内容拷入 dest 数组
TT.util.pushArray = function(src,dest){
	
	Ext.each(src,function(i){
		dest.push(i);
	});	
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值