Backbone源码分析(三)

Backbone源码分析(一)
Backbone源码分析(二)

Backbone中主要的业务逻辑位于Model和Collection,上一篇介绍了Backbone中的Model,这篇文章中将主要探讨Collection的源码。

让我们先来看一下Collection的构造函数:

接下来是在set, add, remove 中经常用到的splice函数:

下面我们来讲解set函数,set函数是Collection中非常重要的一个函数,集增删改查与一身,处理了大量的核心业务逻辑:

Collection中存储model的属性有两个:this.models数组和_byId键值对,所有的增删改查都需要对这两个属性进行更新。
set函数中主要做了以下几件事情:

  • 将models参数处理成Model的实例数组
  • 处理options中的at参数,将其变成一个合理的数字
  • 声明变量set, toAdd, toMerge, toRemove, modelMap
  • 遍历models参数,找出其中应当更改或者加入到Collection中的model并添加到上文的变量中
  • 从Collection的this.models中删除不存在本次set中的model
  • 统一更改Collection中的this.models数组
  • 排序,但不要触发sort事件
  • 统一处理事件: add、sort、update事件

add函数内部就是利用set函数来处理的:

add之后,另一个重要的操作就是remove,Collection中的remove逻辑由remove, _removeModels, _removeReference 三个函数完成

remove整体逻辑如下:

  • 处理models参数
  • this.models_byId中删除model,触发Collection的remove事件
  • 断开model与Collection的关联,移除model的绑定事件
  • 触发Collection的update事件

_removeReference对应的是_addReference,它的作用于_removeRenence相反:

最后要提一下的是reset函数:

1 1 收藏 评论

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部