Backbone原始碼分析(二)

發表於2016-04-12

  在傳統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方法如下:

相關文章