0

我正在通过示例 todomvc 应用程序从这里学习 Backbone.js:http: //todomvc.com/architecture-examples/backbone/

我有点卡在 app-view.js 部分: https ://github.com/tastejs/todomvc/blob/gh-pages/architecture-examples/backbone/js/views/app-view.js

这是代码片段:

    // Add a single todo item to the list by creating a view for it, and
    // appending its element to the `<ul>`.
    addOne: function (todo) {
        var view = new app.TodoView({ model: todo });
        this.$list.append(view.render().el);
    },

函数“addOne”中的“todo”变量是从哪里来的?我搜索了整个项目文件,到目前为止没有找到任何指定或初始化“todo”变量的特定函数。我试图在他们的网站上阅读 Backbone.js 和 Underscore.js 文档,但到目前为止还没有找到解释。

4

1 回答 1

1

好的,让@Evgeniy 所说的更具可读性..

当您在集合上收听“添加”时,传递给监听方法的第一件事是添加的模型:

this.listenTo(app.todos, 'add', this.addOne);

这是主干源代码中的行:

(model = toAdd[i]).trigger('add', model, this, options);

所以你可以看到第一个参数是添加的模型,然后是集合,然后是从传递的任何选项this.collection.add(model, [options])

addAll也在调用addOne- 它遍历所有模型并为它们一一添加视图:

app.todos.each(this.addOne, this);

在每种情况下,第一个参数都将是一个需要为其添加视图的模型。

于 2014-08-26T09:01:47.683 回答