集合(Collection)是一个Backbone对象,用来组织和管理多个模型,它不仅仅是一个javascript数组,还提供了专门的方法来对集合进行排序、过滤和遍历,集合可以方便的与REST服务器进行通信。

RoomCollection=Backbone.collection.extend({model: RoomModel});

var room1=new RoomModel({name:'test1'});

var room2=new RoomModel({name:'test2'});

var room3=new RoomModel({name:'test3'});

var rooms=new RoomCollection([room1,room2,room3]);

在集合内部,模型被存储在一个名为models的数组当中,为集合添加模型或删除模型时,Backbone.Collection负责对这个数组进行维护

注意:对集合进行排序后,模型元素的索引会更改掉

集合提供的方法:

1. at():获取处于特定索引位置的模型,var model=rooms.at(2);

2. indexOf():获取模型的索引,此方法从underscore.js中继承过来,rooms.indexOf(model);

3. clone():获取对象的深拷贝,改变复制的对象的属性不会影响原始模型对象的属性值,rooms.at(2).clone();

4. length:获取集合的长度,rooms.length

5. get():使用ID从集合中获取模型,保证最佳性能,如果ID没有初始化,就用对象模型的cid代替ID,rooms.get('c1')

6. add():为集合添加一个新的模型rooms.add(new RoomModel({name:'test4'}),{at:2}),在索引为2的位置为集合添加一个新模型,

  add方法只添加不重复的模型,可以添加一个模型,也可以添加一个模型数组

7. remove():删除一个或多个模型, rooms.remove(['c1','c2']),或者rooms.remove(model)

8. reset():清空集合中原有的模型,并且可以添加新的模型

  把集合当队列或者栈操作,所以push(),pop(),unshift(),shift()方法都可以用

9. sort():排序,由comparator(定义排序规则)属性辅助完成

10. pluck():把集合中每个模型的特定属性值作为数组返回,rooms.pluck('name')

11. map():对每个模型进行特定的计算,返回所有模型计算结果的数组

  rooms.map(function(model){

    return model.get('name')+'hi';

  })

12. every():检查集合中所有的模型是否满足指定条件,只要有一个不满足条件就返回false,都满足条件返回true

  var reslut=rooms.every(function(model){

    return model.get('name').length>5;

  })

13. some():检查集合中的任意模型是否满足指定条件,只要有一个满足条件就返回true,只有都不满足条件才返回false

  var reslut=rooms.some(function(model){

    return model.get('name').length>5;

  })

14. create():在集合中添加新的模型,并保存到服务器,返回新添加的模型

  var room=rooms.create({name:'test6'});room是新添加的模型

15. where():返回集合中所有匹配指定属性的模型数组。 对于简单的filter(过滤)比较有用。

 rooms.where({name:'test1'})

16. findWhere():返回集合中匹配指定模型的第一个模型

  var room=rooms.findWhere({name:'test1'})

backbone学习笔记:集合(Collection)的更多相关文章

  1. Backbone学习笔记一Backbone中的MVC

    原文章地址http://bigdots.github.io/2015/12/01/Backbone学习笔记(一)/#more Backbone.js为复杂WEB应用程序提供模型(models).集合( ...

  2. 【再探backbone 02】集合-Collection

    前言 昨天我们一起学习了backbone的model,我个人对backbone的熟悉程度提高了,但是也发现一个严重的问题!!! 我平时压根没有用到model这块的东西,事实上我只用到了view,所以昨 ...

  3. Backbone 学习笔记

    Backbone 是一款基于模型-视图-控制器 MVC 模式的轻量级javascript 框架 ,可以用来帮助开发人员创建单页Web应用. 借助Backbone 我们可以使用REST的方式来最小化客户 ...

  4. java学习笔记 --- 集合(续)

    1.map集合 1.1.特点:将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 1.2.Map集合和Collection集合的区别? Map集合存储元素是成对出现的,Map集 ...

  5. Backbone学习笔记 - Collection及Router篇

    Collection Collection可以看成是Model的集合.以下是一个集合的例子: var Song = Backbone.Model.extend({ defaults: { name: ...

  6. Backbone学习笔记 - View篇

    Backbone是一种Web端的MVC框架,这里纪录学习Model,View和Collection的笔记. 1 View initialize构造函数 Backbone.View 与jQuery库紧密 ...

  7. 0014 Java学习笔记-集合-HashMap集合

    主要的方法 + 构造方法: * HashMap(); - 默认大小16,负载因子0.75 * HashMap(int initialCapacity); * HashMap(int initialCa ...

  8. backbone学习笔记(一)

    因为工作的需要,从今天起对backbone的学习过程做下记录. 学习计划: 1.1周看基本知识(2014/1/18-2014/1/25) 2.基本知识总结(2014/1/26) 3.半周按教程写hel ...

  9. Backbone学习笔记

    model model的get和set是对model.attributes进行操作,并不是直接对model进行操作 collection collection.set()会触发相应的add,remov ...

随机推荐

  1. HTML(四):行级标签和块级标签

    一.行级标签 行级标签又称为内联标签,行级标签不会单独占据一行,设置宽高无效,行内内部可以容纳其他行内元素,但不可以容纳块元素,不然会出现无法预知的效果. 常见行级标签: span.strong.em ...

  2. node学习笔记2——搭建服务器

    搭建服务器关键词: require('http') —— 请求 node 里面的 http 模块 createServer —— 创建一个服务器 request —— 请求 response—— 响应 ...

  3. 引用dataframe的值为什么会不同

    在R语言中,通常有一些操作符可以来提取对象的子集,如以下三种: 1.“[” 单层方括号,返回的对象与原对象类型相同,它也可以返回一个对象中的多个元素: 2.“[[” 双层方括号,用来从列表(list) ...

  4. 移动互联网App兼容性测试

    我建议大家也可以参考一些针对App监测和统计的网站,都非常有意义,具体如下: 友盟品牌手机排行榜  http://www.umeng.com/ 移动观象台   https://www.talkingd ...

  5. C++ 结构体初始化

    #include <stdio.h> int main(int argc, const char * argv[]) { //定义结构体类型 struct Person { char *n ...

  6. 实验四 使用ASP.NET内置对象 总结

    这次实验内容是ASP.NET的一些内置对象的熟悉,感觉看到了上学期JSP的影子,很多地方都很像.像Response对象,Request对象,Context对象等等.以前我老是搞混Response对象和 ...

  7. (笔记)Mysql命令create table:创建数据表

    create table命令用来创建数据表. create table命令格式:create table <表名> (<字段名1> <类型1> [,..<字段 ...

  8. (笔记)Linux下的CGI和BOA使用期间遇到的问题汇总

    前段时间在做C/S模式下的视频监控,这段时间是B/S模式下的.期间遇到了不少问题,有些问题一卡就是几天,有些问题的解决办法在办法在网上也不是很好找,所以还有些问题虽然得到了临时解决,但是其原理现在我本 ...

  9. VIM下的普通模式的相关知识

    什么为一次操作? 从进行插入模式开始,直到返回普通模式为止,在此期间的任何修改都视为一次操作:   使用 u 可以撤销最新的修改: 所以呢,控制好在插入模式的操作就可以控制好撤销命令的粒度: 另外,最 ...

  10. C# js 在页面能执行,放在单独js文件不能执行

    我们先来看看MVC中生成的 注意:url.Content 生成的路径 Html.ActionLink 与 Url.Action 1.两者者是根据给定的Controller,Action 生成链接, 但 ...