我正在通过骨干todos coffeescript教程。我试图理解为什么@addOne,@ addAll方法在AppView中定义,然后从AppView中绑定到Todos(Backbone.Collection / TodoList实例)。为什么这些方法不只是在TodoList本身中定义的?
class TodoList extends Backbone.Collection
...
class AppView extends Backbone.View
initialize: =>
...
@input = this.$("#new-todo")
Todos.bind("add", @addOne)
Todos.bind("reset", @addAll)
Todos.bind("all", @render)
Todos.fetch()
...
addOne: (todo) =>
view = new TodoView( {model: todo} )
this.$("#todo-list").append( view.render().el )
# Add all items in the **Todos** collection at once.
addAll: =>
Todos.each(@addOne);
...
Todos = new TodoList
App = new AppView()
答案 0 :(得分:1)
这是您关注的基本分离。模型包含数据,视图管理DOM。如果你看一下addOne函数,你会发现它正在创建一个新视图并将它附加到DOM:
this.$("#todo-list").append( view.render().el )
绑定使得无论何时向模型(数据)添加新项目,它都会自动调用addOne来创建新视图(DOM)。