如果将一个Model对象比喻成数据库中的一条记录,那么Collection就是一张数据表。它表示为一个模型集合类,用于存储和管理一系列相同类型的模型对象。
举个简单的例子:
// 定义模型类
var Book = Backbone.Model.extend();
// 定义集合类
var BookList = Backbone.Collection.extend({
model : Book
});
// 创建一系列模型对象
var book1 = new Book({
name : 'Effective Java中文版(第2版)'
});
var book2 = new Book({
name : 'JAVA核心技术卷II:高级特性(原书第8版)'
});
var book3 = new Book({
name : '精通Hibernate:Java对象持久化技术详解(第2版)'
});
// 创建集合对象
var books = new BookList([book1, book2, book3]);
console.log(book1);
console.log(books);
上面我们依次定义了模型类Book 和集合类 BookList ,然后创建了3个模型对象并将它们存入到集合中。
看一下结果:
集合类中有2个key(models 和_byId) ,分别对应的是数组和json 对象,展开后内容就是上面的3个模型对象。
除了向构造函数中添加模型列表外,还可以直接传递数据。
// 定义模型类
var Book = Backbone.Model.extend();
// 定义集合类
var BookList = Backbone.Collection.extend({
model : Book
});
var models = [{
name : 'Effective Java中文版(第2版)'
}, {
name : 'JAVA核心技术卷II:高级特性(原书第8版)'
}, {
name : '精通Hibernate:Java对象持久化技术详解(第2版)'
}];
// 创建集合对象
var books = new BookList(models);
这里的book 和上面传实例化对象 所得到的结果是一样的。
为了偷懒我在想如果集合类中不声明 mode : Book 可不可以尼?
结果操作我得到一个结果,声明是可以去掉的,所造成是
如果你在定义集合类的时候没有设置model,那么集合会默认将原始数据转换为Backbone.Model类的实例
到这里我们就应该简单了解到collection 的作用了。至于下面的各个方法其实就很容易去理解了,可以看看这里说的很详细。
https://www.iteye.com/blog/yujianshenbing-1748826
至于发送数据到Server端 ,到后面有机会会和view整合到一起,列出一个demo 。