0

バックボーンtodoアプリには、次のような機能があります。

addOne: function(todo){
var view=new app.TodoView({model:todo});
$("#todo-list").append(view.render().el);  
}

上記の関数で「todo」引数が何を受け取るのかわかりませんか?

この関数は別の関数によって呼び出されます。

addAll: function(){
this.$("#todo-list").html('');
app.Todos.each(this.addOne,this); 
 }

最初の関数は、それをモデルとして他のビューに渡すことです。私はここで基本的な何かが欠けていると思います。少し光を当ててください。さらにコードが必要な場合はお知らせください。

4

1 に答える 1

1

私はこのtodoリストを参照用に使用しています:http://backbonejs.org/examples/todos/todos.js

簡単な答えtodoinaddOne: function(todo){は、Todosコレクションの単一のTodoモデルを指します。

長い答え

これを少し分解してみましょう。

  Todos.each(this.addOne, this);

これTodosがのCollectionですTodo Models。このコードはコレクションを反復処理し、コレクション内の各モデルはとして関数にTodo渡され ます。また、関数内のコンテキスト(または値)を現在(を参照している)に設定しています。これを行わなかった場合、関数内はコレクション内の現在のモデルを参照します()addOnetodothisaddOnethisAppthisaddOnetodo

// Add a single todo item to the list by creating a view for it, and
// appending its element to the `<ul>`.
addOne: function(todo) {                           // todo refers to a single model in the collection
  var view = new TodoView({model: todo});          // create a new TodoView with the todo model
  this.$("#todo-list").append(view.render().el);   //<- 'this' refers to 'App'. append the newly created view into the DOM, hence displaying it.
},

addOne関数では、新しいものを作成し、それTodoViewをDOMに追加して表示します。

于 2013-01-18T09:14:11.700 に答える