在传统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方法如下: