集合
可以在集合上监听
change
方法,当模型发生改变的时候,使集合的fetch获得通知。,模型触发的任何事件可以在集合上直接触发,同时可以监听集合中模型的变换。集合上代理了32个Underscore
的方法,在使用时找不到,可以查看
集合相关的事件
- add
- remove
- reset
- sort
集合和模型共同的事件
- request
- sync
- error
集合类常用选项
-
Backbone.Collection.extend()
,使用方式Backbone.Collection.extend(properties,[classProperties])
-
constructor/initialize
,使用方式new Backbone.Collection([models],[options])
model
sync
-
comparator
,函数,定义排序规则。用法和sort
很相似 url
- 也可以通过方法,属性获取
parse
- 每一次调用
fetch
从服务器拉取集合的模型数据是,parse都会被调用
集合对象常用属性方法
col.models
col.add(models,[options])
- 触发集合
add
事件 - 模型已存在则被忽略,需要传递options
{merge:true}
,会适当的触发模型的change
事件 - options
{at:index}
将模型插入特定的index位置 - options
{sort:false}
禁用添加模型时排序
col.remove(models,[options])
- 触发集合的
remove
事件
col.reset(models,[options])
- 使用模型列表重置集合
- 没有参数,则将集合对象置空
-
col.fetch()
也会触发reset
事件 - 在重置之前可以将旧模型列表赋值给
previousModels
col.set(models,[options])
- 没有的模型将被添加,有的模型可能被修改,或者移除
-
options
可以通过{add:false}
或{remove:false}
或{merge:false}
将其禁用 - 可能触发集合的
add/remove
事件,可能触发模型的change
事件
col.get(id)
col.at(index)
clo.push(model,[options])
clo.pop([options])
col.unshift(model,[options])
col.shift([options])
-
col.slice(begin,end)
浅拷贝 -
col.length
模型数量 col.sort([options])
- 触发集合的
sort
事件
col.pluck(attribute)
- 从集合中每个模型中拉取attribute,获取属性值,组成数组
col.where(attributes)
- 返回集合中所有匹配
attributes
的模型数组
col.findWhere(attributes)
- 返回集合中第一个匹配
attributes
的模型对象
col.clone()
- 返回一个模型列表完全相同的集合新实例
col.fetch()
- 内部智能调用
set
方法 - 会触发
request
,sync/error
事件 - 每一个新增的模型都会触发
add
事件,改变现有的模型会触发change
事件,删除一个模型会触发remove
事件 - 不删除任何东西options
remove:false
-
jQuery.ajax
选项也可以作为fetch
的选项
col.create()
- 创建成功会被添加到集合上
add
事件 - 会触发
request
,sync/error
事件
// 4. collection.reset()
reset: function(models, options) {
options.previousModels = this.models;
}