12.3 認識 Backbone.Model
Backbone.Model 是 Backbone 初學者的第三關。Backbone.Model 用來表示(存放)資料,這是一個「資料模型」的類別。接下來以幾個步驟,重新實作第 11 章的「顯示留言」功能。
Step 1:宣告 Model
有了 Backbone.Model 後,才能表示資料。修改 client/javascripts/app.js 加入以下程式碼:
1 app.Message = Backbone.Model.extend({
2 defaults: {
3 success: false,
4 errors: [],
5 errfor: {},
6
7 message: 'No message yet.'
8 }
9 });
說明如下:
- 第 1 行:使用 Backbone.Model.extend() 宣告(擴充)一個新的 Data Model,命名為 Message 並儲放 於 app 物件
- 第 2 行:使用 defaults 為這個 Model 定義預設的資料:
- success:Backbone 框架所定義的欄位,目前暫不使用
- errors:Backbone 框架所定義的欄位,目前暫不使用
- errfor:Backbone 框架所定義的欄位,目前暫不使用
- message:自行定義的欄位,用來儲存訊息
Step 2:宣告 Template
原本的做法,將程式碼與 HTML5 語法混在一起,非常不好維護。現在改用 Underscore 與 Backbone 後,就可以使用 Template 的方式。以下是原本的實作:
var dataMapping = function(data) {
for (i = 0; i < data.length; i++) {
var htmlCode =
"<div class=\"alert alert-dismissable alert-info\">"
+ " <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button>"
+ " <h4>jollen</h4>"
+ data[i].message
+"</div>";
$('#message').append(htmlCode);
}
}
將 HTML5 語法的部份,獨立出來,並且宣告成 Template。修改 chat.html,加入以下片段:
<script type='text/template' id='tmpl-message'>
<div class="alert alert-dismissable alert-info">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">
×</button>
<h4>jollen</h4>
<%= message %>
</div>
</script>
使用