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 のドキュメントを Web サイトで読み込もうとしましたが、これまでのところ説明が見つかりません。

4

1 に答える 1

1

@Evgeniyが言ったことをより読みやすくします..

コレクションで 'add' をリッスンする場合、最初にリッスン メソッドに渡されるのは追加されたモデルです。

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

バックボーン ソースの行は次のとおりです。

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

したがって、最初のパラメーターが追加されたモデルであり、次にコレクション、そしてから渡されたオプションであることがわかりますthis.collection.add(model, [options])

addAllも呼び出しaddOneています - すべてのモデルをループし、それらのビューを 1 つずつ追加します。

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

いずれの場合も、最初のパラメーターは、ビューを追加する必要があるモデルになります。

于 2014-08-26T09:01:47.683 に答える