天天看点

Backbone源码分析(二)

  在传统mvc框架模式中,model承担业务逻辑的任务。backbone作为一个mvc框架,主要的业务逻辑交由model与collection来实现。model代表领域对象,今天主要学一下model源码中几个重要的函数。

  我们先看一下model的构造函数做了哪些事情:

  model的构造函数主要做了以下几件事:

处理参数

处理model的属性:cid、attributes、collection

解析数据、处理属性的默认值

set方法接收处理参数

调用initialize做初始化操作

  

  接下来是一个重要的set函数,这个函数是model最核心的一个方法

  来整理一下set方法做的几件事:

根据api的参数声明来处理参数

声明几个与属性变化相关的变量

设置_previousattributes与changed来保存上次属性和这次的变化数据

更新属性,保存本次变化数据和对应的key

将发生变化的属性广播出去,change:key形式

在model层次上发出change事件

  接下来是与后端打交道的save方法:

其中用到的wraperror方法,源码如下:

  save方法做的几件事:

如果以客户端为准,则首先跟新model,否则验证需保存的属性

声明局部变量,替换options中的success回调函数和error回调

如果以后端返回数据为准,则先直接将attributes属性暂时更改,方便sync方法同步model,而后将attributes恢复,等待succes毁掉中利用后端返回结果更新

  接下来是销毁model的destroy方法:

  destroy方法做的事情:

声明局部变量以及做销毁操作的destroy方法

替换options中的success方法

如果model未存储于数据库中,直接使用underscore的defer延迟执行success,否则向后台发送删除请求

  与验证相关的_validate方法如下: