Backbone.js学习笔记——Collection篇
2013-07-24 16:56
120 查看
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>
学过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>
相关文章推荐
- backbone学习笔记—— 入门篇
- 使用Backbone.js开发Chrome便签插件
- 构建移动Web应用程序的技术堆栈
- JAVASCRIPT MVC架构之旅
- Javascript SDK:轻松开发HTML5应用的必备工具
- C++真的能够王者归来吗?
- 50+ 个 JavaScript & HTML5 框架以及相关工具
- Javascript MVC架构之旅
- Backbonejs -- Switching views
- Backbone.js快速入门
- javascript Backbone框架学习
- backbone链接node服务器 session保存失败或每次都是新的链接
- node.js backbone.js jquery 跨域访问 利用CORS
- 【转】backbone.js 0.9.2源码分析
- Backbone.js简单入门范例
- angularjs(二):前端开发框架三剑客—AngularJS VS. Backone.js VS.Ember.js
- 使用Backbone.js实现级联选择框
- AngularJS vs. Backbone.js vs. Ember.js
- Backbine.js实战第六章----视图
- Backbine.js实战第五章----模型集合