に動作しますなぜこの質問はである「トドス」BACKBONE.JSサンプル、についてです: http://documentcloud.github.com/backbone/docs/todos.htmlBACKBONE.JS「トドス」のサンプル - わからないコードの特定のフラグメントは
The following block of codeは、「The Application」セクションにありTodos
コレクションを繰り返し処理します。私の問題は、addOne
関数はTodos
コレクションへの参照として渡されますが、その関数はthis
への参照を持ちます。これはTodos
コレクションオブジェクトによって関数が呼び出されたときに参照されるものと同じではありません。呼び出し側がインスタンス化さAppView
オブジェクトのコンテキストでそれを呼び出していないときに
addOne: function(todo) {
var view = new TodoView({model: todo});
this.$("#todo-list").append(view.render().el);
},
addAll: function() {
Todos.each(this.addOne);
},
なぜ機能が正しく実行しますか?
ya - あなたはほとんど「偶然によって働いている」ものに遭遇しました。彼らはおそらく '_(これ)を持っていたはずです。'this'ポインタがウィンドウではなくビューであることを保証するために、初期化でbind(" addOne ")'ステートメントを実行します。 – timDunham
正確ではありません。私の答えを見て、トリックは 'bind'の第三引数です。 – s4y
私は最初もそうだと思っていましたが、答えにNathanの返答を確認してください。 – timDunham