Backbone with Model
Simple example shows how to user Model in Backbone
HTML
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.5.2/underscore-min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.0.0/backbone-min.js"></script>
<div id="container"></div>
<script type="text/template" id="person_template">
<%= name %>'s age is <%= age %>
</script>
<br/>
<hr> 下面是调试输出区域
<pre></pre>
CSS
body {
font-size: 14px;
color: blue;
}
pre {
color: red;
}
JavaScript
//定义 Model
var Person = Backbone.Model.extend({
defaults : { //声明属性,并指定默认值
name : 'unknown',
age : 20
}
});
var PeopleView = Backbone.View.extend({
el: '#container',
initialize: function(options) {
this.render();
},
render: function() {
var template = _.template($("#person_template").html());
//模板中使用点操作符来访问属性的,obj.name, 所以要 toJSON() 转换
this.$el.html(template(this.model.toJSON()));
}
});
// 实例化 Model 对象
var john = new Person({
name : 'John',
age : 25
});
john.set('age', 30);
john.age = 45; //这种方式赋值不管用的
debug(john);
debug(john.attributes);
var peopleView = new PeopleView({model: john});
//这是一个辅助调试的函数,因为 JSFiddle 最好不要用 document.write, 且 console.log() 输出也不便于查看
function debug(arg){
$("pre").append(JSON.stringify(arg, null, 2) +"<br/>");
}