Extjs-实用工具 混合型集合 Ext.util.MixedCollection

混合集合类,可以支持用数字型索引获取和保存数据,也可以执行key:value对的形式获取和保存数据,
MixedCollection不但提供了集合相关的功能函数,还提供了对事件的支持

1.MixedCollection添加数据

<script type="text/javascript" defer>  
   	Ext.onReady(function() {
		var c = new Ext.util.MixedCollection();
	    //增加一条数据
	    c.add(1);
	    //可以使用addAll增加一个数组或者一个JSON对象
	    c.addAll([2,3]);
	    c.addAll({json:4});
	    //insert函数,允许用户添加数据的位置
	    c.insert(0,100);
	    var result = [];
	    for (var i = 0; i < c.getCount(); i++) {
	        result.push(c.get(i));
	    }
	    alert(result);
	});
</script>
2.MixedCollection删除数据
<script type="text/javascript" defer>  
   	Ext.onReady(function() {
		var c = new Ext.util.MixedCollection();
	    c.add(1);
	    c.add(2);
	    c.add(3);
	    //删除索引0
	    c.removeAt(0);
	    var result = [];
	    for (var i = 0; i < c.getCount(); i++) {
	        result.push(c.get(i));
	    }
	    alert(result);
	});
</script>
3.MixedCollection修改数据(更新有问题)
<script type="text/javascript" defer>  
   	Ext.onReady(function() {
		var c = new Ext.util.MixedCollection();
	    c.add(1);
	    c.add(2);
	    c.add(3);
	    //更新
	    c.replace(0,200)
	    var result = [];
	    for (var i = 0; i < c.getCount(); i++) {
	        result.push(c.get(i));
	    }
	    alert(result);
	});
</script>
4.MixedCollection读取数据
<script type="text/javascript" defer>  
   	Ext.onReady(function() {
		var c = new Ext.util.MixedCollection();
	    c.addAll([1,2,3,4,5,6]);
	    var lwc = Ext.getDom('lwc');
	    lwc.innerHTML += '集合第一条数据: '+c.first()+'<br>';
	    lwc.innerHTML += '集合最后条数据: '+c.last()+'<br>';
	    lwc.innerHTML += '集合数据的数量: '+c.getCount()+'<br>';
	    lwc.innerHTML += '集合索引1的位置的数据为: '+c.get(1)+'<br>';
	    lwc.innerHTML += '集合值为2的索引为: '+c.indexOf(2)+'<br>';
	});
</script>
  </head>
  <body>
  	<div id='lwc'></div>
  </body>
</html>
5.MixedCollection执行复杂查询操作
<script type="text/javascript" defer>  
   	Ext.onReady(function() {
		var c = new Ext.util.MixedCollection();
	    c.addAll(
	    	{name:'tom'},
	    	{name:'cat'},
	    	{name:'jack'}
	    );
	    var lwc = Ext.getDom('lwc');
	    /*
	    	find支持使用回调函数判断集合中的对象是否满足查询的要求,如果存在就返回一个满足的对象
	    	如果改成 o.name = 'tom1' 打印为null
	    */
	    lwc.innerHTML += c.find(function(o){
	    	return o.name == 'tom';
	    })+'<br>';
	    /*
	    	对集合中的对象某个属性进行匹配,并且返回一个满足条件的索引值
	    	如果改成 'name':'tom1',将打印-1
	    */
	    lwc.innerHTML += c.findIndex('name','tom1')+'<br>';
	    //返回满足对象的索引
	    lwc.innerHTML += c.findIndexBy(function(o){
	    	return o.name == 'tom';
	    });
	});
</script>
6.MixedCollection复制数据
<script type="text/javascript" defer>  
   	Ext.onReady(function() {
		var c = new Ext.util.MixedCollection();
	    c.addAll(
	    	{name:'11'},
	    	{name:'22'},
	    	{name:'33'},
	    	{name:'aa'},
	    	{name:'bb'}
	    );
	    //全部复制
	    var c2 = c.clone();
	    //复制属性name符合后面数字的数据
	    var c3 = c.filter('name',/^\d+$);
	    //只保留集合中name值不是数字的值
	    var c4 = c.filterBy(function(o){
	    	return /^\D+$/.test(o.name);
	    });
	});
</script>
7.使用key:value的方式操作MixedCollection
<script type='text/javascript' defer>  
   	Ext.onReady(function() {
	    var c = new Ext.util.MixedCollection();
	    //为每条记录设置对象的Key值
	    c.add('key1', 1);
	    c.add('key2', 2);
	    c.add('key3', 3);
	    var result = [];
	    for (var i = 0; i < c.getCount(); i++) {
	        result.push(c.get(i));
	    }
	    alert(result);//打印1,2,3
	    
	    //索引1增加key值为key10值为100
	    c.insert(1, 'key10', 100);
	    var result = [];
	    for (var i = 0; i < c.getCount(); i++) {
	        result.push(c.get(i));
	    }
	    alert(result);//打印1,100,2,3
	   
	});
</script>
8. MixedCollection的事件
MixedCollection继承了Observable,因此可以设置监听函数,
MixedCollection内部定义了add,clear,remove,replace等4个事件
<script type="text/javascript" defer>  
   	Ext.onReady(function() {
	    var c = new Ext.util.MixedCollection();
	    c.on('add', function(index, o, key) {
	        alert('在' + index + '添加了数据' + o + ',key为' + key);
	    });
	    c.on('clear', function() {
	        alert('集合数据被清空');
	    });
	    c.on('remove', function(o, key) {
	        alert('删除了数据' + o + ',key为' + key);
	    });
	    c.on('replace', function(key, oldObject, newObject) {
	        alert('修改了key为' + key + '的数据' + newObject + ',修改前的值为' + oldObject);
	    });
	
	    Ext.get('add').on('click', function() {
	        c.add(new Date().getTime());
	    });
	    Ext.get('clear').on('click', function() {
	        c.clear();
	    });
	    Ext.get('remove').on('click', function() {
	        c.removeAt(0);
	    });
	    Ext.get('replace').on('click', function() {
	        c.replace(0, new Date().toLocaleString());
	    });
	
	});
</script>
  </head>
  <body>
    <button id='add'>add</button>
    <button id='clear'>clear</button>
    <button id='remove'>remove</button>
    <button id='replace'>replace</button>
    <div id='result'></div>
  </body>
</html>






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值