TML 中使用 Backbone.js 框架实现前端 MVC 架构,需要按照以下步骤进行:
<script src="underscore.js"></script>
<script src="backbone.js"></script>
var Todo = Backbone.Model.extend({
defaults: {
title: '',
completed: false
}
});
var TodoList = Backbone.Collection.extend({
model: Todo
});
var TodoView = Backbone.View.extend({
tagName: 'li',
template: _.template($('#item-template').html()),
events: {
'click .toggle': 'toggleCompleted'
},
initialize: function() {
this.listenTo(this.model, 'change', this.render);
},
toggleCompleted: function() {
this.model.toggle();
},
render: function() {
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
<ul id="todo-list"></ul>
<script type="text/template" id="item-template">
<div class="view">
<input class="toggle" type="checkbox" <%= completed ? 'checked' : '' %> />
<label><%= title %></label>
</div>
</script>
<script>
var todos = new TodoList();
var todoView = new TodoView({ model: myTodo });
$('#todo-list').append(todoView.render().el);
</script>
需要注意的是,Backbone.js 遵循前端 MVC 设计模式,其中模型(Model)代表数据层,视图(View)代表表示层,控制器(Controller)没有被明确定义,而是通过 Backbone.Router 来实现视图与数据之间的路由关系。另外,以上代码中用到的 Underscore.js 库提供了许多辅助函数和常用功能的实现,同时也是 Backbone.js 框架的一个依赖库。