Backbone Todos示例方法绑定

时间:2014-03-14 18:18:39

标签: javascript backbone.js coffeescript

我正在通过骨干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()

1 个答案:

答案 0 :(得分:1)

这是您关注的基本分离。模型包含数据,视图管理DOM。如果你看一下addOne函数,你会发现它正在创建一个新视图并将它附加到DOM:

this.$("#todo-list").append( view.render().el )

绑定使得无论何时向模型(数据)添加新项目,它都会自动调用addOne来创建新视图(DOM)。