javascript - TodoMVC 上的 Backbone.js View : function and it's argument and how does it works

标签 javascript function backbone.js underscore.js todomvc

我正在通过此处的示例 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/

相关文章:

javascript - 了解 emberjs 模型初始化和依赖关系

function - 拥有长初始化方法是不好的做法吗?

javascript - 针对服务器请求对对象的一部分进行字符串化

javascript - 主干模型和日期选择器默认日期

javascript - NodeJS, Async forEachSeries 执行顺序

javascript - 对数组中每个对象进行多个异步操作产生意外结果

javascript - 使用 HTML、Javascript、MySQL 和 PHP 组合提交表单时出错

scala - 为什么柯里化(Currying)不适用于函数文字?

c - —"volatile void function( ... )"是做什么的?

javascript - 可以吗?通过硬编码值来重写 Backbone.sync?