我正在通过此处的示例 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 文档,但到目前为止还没有找到解释。
最佳答案
好的,让 @Evgeniy 所说的更具可读性..
当您在集合上监听“add”时,传递给监听方法的第一件事是添加的模型:
this.listenTo(app.todos, 'add', this.addOne);
这是主干源中的行:
(model = toAdd[i]).trigger('add', model, this, options);
因此您可以看到第一个参数是添加的模型,然后是集合,然后是从 this.collection.add(model, [options])
传递的任何选项.
addAll
也在调用addOne
- 它循环所有模型并为它们一一添加 View :
app.todos.each(this.addOne, this);
在每种情况下,第一个参数都是一个需要为其添加 View 的模型。
关于javascript - TodoMVC 上的 Backbone.js View : function and it's argument and how does it works,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25499263/