模型是所有javascript應用程式的核心,包括互動資料及相關的大量邏輯: 轉換、驗證、計算屬性和通路控制。你可以用特定的方法擴充<code>backbone.model</code>,模型也提供了一組基本的管理變化的功能。
new一個model的執行個體後就會觸發initialize()函數。
現在我們想設定一些屬性,有兩種方式,可以在建立model執行個體時進行傳參,也可以在執行個體生成後通過<code>model.set(obj)</code>來進行設定。
# 擷取屬性
有的時候你可能會想讓model有預設屬性值,隻要在進行model聲明的時候設定個<code>defaults</code>就行了。
我們可以通過<code>model.bind(event,callback)</code>方法來綁定change事件來監聽屬性改變。下面的這個例子就是在initialize方法中綁定了一個name屬性改變的事件監聽。 如果person的name屬性改變了,就會彈出個對話框顯示新值。
服務端實作一個restful的url例如/user,可以允許我們通過他與背景互動。
<code>model.urlroot</code>:如果使用的集合外部的模型,通過指定 urlroot 來設定生成基于模型 id 的 urls 的預設 url 函數。 “/[urlroot]/id”
如果id為null,則會送出一個post請求到/user。
<code>model.save([attributes], [options]) </code>: 通過委托<code>backbone.sync</code>儲存模型到資料庫(或可替代的持久層)。 attributes 散清單 (在 set) 應當包含想要改變的屬性,不涉及的鍵不會被修改。 如果模型含有<code>validate</code>方法,并且驗證失敗,模型不會儲存。 如果模型<code>isnew</code>, 儲存将采用 “create” (http post) 方法, 如果模型已經在伺服器存在,儲存将采用 “update” (http put) 方法.
初始化一個model執行個體并設定其id屬性,并調用fetch方法,這樣會請求<code>urlroot + '/id'</code>位址到背景。
<code>model.fetch([options])</code>: 從伺服器重置模型狀态。這對模型尚未填充資料,或者伺服器端已有最新狀态的情況很有用處。 如果伺服器端狀态與目前屬性不同,則觸發<code>change</code>事件。 選項的散清單參數接受<code>success</code>和<code>error</code>回調函數, 回調函數中可以傳入<code>(model,response)</code>作為參數。
# 更新一個model 當儲存的model對象的id不為空時,則會送出一個put請求到urlroot。
調用model的destroy方法時,則會送出請求到urlroot+”/id”
<code>model.destroy([options])</code>:通過委托<code>http delete</code>請求到<code>backbone.sync</code>銷毀伺服器上的模型. 接受<code>success</code>和<code>error</code>回調函數作為選項散清單參數。将在模型上觸發<code>destroy</code>事件,該事件可以通過任意包含它的集合向上冒泡。