Backbone.js学习笔记——Collection篇

本文介绍了Backbone.js中Collection的使用方法,包括如何创建模型和集合,如何添加和删除模型,以及如何通过事件监听集合的变化。通过示例代码展示了如何在网页上动态更新集合中的内容。

Collection 是backbone.js的一个重要组成部分。

学过java的朋友对于Collection 相当熟悉 ,已提到Collection 大家脑子里估计都是List , Set, Map,等。不要怀疑 你自己,我们backbone 的List有着异曲同工之妙。


首先看官网解释:

集合是model的有序组合,我们可以在集合上绑定"change" 事件,从而当集合中的模型发生变化时获得通知,集合也可以监听"add" 和“remove" 事件, 从服务器更新,并能使用Underscore.js 提供的方法.

看下面例子

Book = Backbone.Model.extend({
defaults : {   
    name:null
}
});
Box = Backbone.Collection.extend({
model : Book  //model = collection.model 指定集合的模型类。可以传入原始属性对象(和数组)来 add,create,以及 reset,传入的属性会被自动转换为适合的模型类型。 


})
var bookyw = new Book({name:"语文"});
var booksx = new Book({name:"数学"});
var bookty = new Book({name:"体育"});


var box = new Box;
box.add(bookyw);
box.add(booksx);
box.add(bookty);
或者 var box = new Book([bookyw,booksx,bookty]);

<!DOCTYPE html>
<html>
<head>
    <title>Collection</title>
</head>
<body>
<p>Backbone Collection Example</p><hr>
<span id="animal_atr"></span>

	<label>我的书柜</label><br>
	<div  style="position:relative;width:30%;height:30%;border:1px solid blue">
		<ul id="mybooks">
		</ul>
	</div>
	<button id="remove">移除</button>
	<button id="add">增加</button><input id="addInput">
	
</body>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

<script src="http://documentcloud.github.com/underscore/underscore-min.js"></script>
<script src="http://documentcloud.github.com/backbone/backbone-min.js"></script>
<script>
(function ($) {
	var bookId = 1;
	Book = Backbone.Model.extend({
		defaults : { 
			id:bookId,	
			name:"新"
		}
	});
    Box = Backbone.Collection.extend({
		model : Book  
		
	})
	var bookyw = new Book({id:bookId++,	name:"语文"});

	var box = new Box;
	box.add(bookyw);

	box.each(function(book){
		$('#mybooks').append("<li ><input type='checkbox' tid='"+book.get('id') +"'>"+book.get('name') +"书</li>");
	});

	$('#remove').click(function(){
		$('input:checked').each(function(){
			var index = $(this).attr('tid');
			var bookx = box.get(index);
			box.remove(bookx);
		})
		reloadpage();
		
	})
	$('#add').click(function(){
		var name = $('#addInput').val();
		var bookx =  new Book({id:bookId++,name:name});
			box.add(bookx);
		reloadpage();
		
	})
	 var  reloadpage = function (){
		$('#mybooks').html('');
		box.each(function(book){
			$('#mybooks').append("<li ><input type='checkbox' tid='"+book.get('id') +"'>"+book.get('name') +"书</li>");
		});
	}
    
})(jQuery);
</script>
</html>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值