匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

Spine.jsのTodoアプリを作るチュートリアルを見て勉強しているのですが、下記行の「this.item」がなぜ、モデルを表しているのかがわかりません。


◎Spine.jsのTodoアプリチュートリアル
http://spinejs.com/docs/example_tasks

◎該当行
this.replace($("#taskTemplate").tmpl(this.item));

下記行は、Taskモデルではなく、Tasksコントローラー内で記述されているので、thisはTasksコントローラーのインスタンスを表すことにはならないのでしょうか?

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/08/30 10:18:58
  • 終了:2012/09/06 10:20:03

回答(1件)

匿名回答1号 No.1

匿名回答1号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2012/09/02 01:45:29

こんばんは。

this.item(@item)のthisは質問に書かれている通り、Tasksコントローラのインスタンスを表しています。

この時this.itemがなぜモデルを表すのかは、
Tasksコントローラが生成されるTaskAppコントローラaddOneメソッドを見ると意味が分かります。

  addOne: (task) =>
    view = new Tasks(item: task)
    @items.append(view.render().el)

ここで、Tasksコントローラをnewする際にitemというパラメータを引数で渡しています。

Spine.Controllerのコンストラクタでは、引数に渡されたパラメータ(arguments)を使ってインスタンスを初期化するため、itemプロパティで渡されたtaskモデルがTasksコントローラのプロパティとして定義されることになります。

以上が理由になります。ちなみに、

class Tasks extends Spine.Controller
  constructor: ->
    super
    @item.bind("update",  @render)
    @item.bind("destroy", @remove)

上記のコンストラクタの中でも@itemを使ってbind定義ができるのも同じ理由です。

匿名質問者

とても丁寧なご回答ありがとうございます!実は公式ドキュメントを何度か繰り返し読み込んでいたら、自己解決してし
まったのですが、こういった質問にもしっかりとした回答がつくのは、はてなってすごいなーと実感しました!

ちなみに、自分がつまづいてた点は、addoneの引数にモデルのインスタンス(?)がなんで渡されてるかわからなかったところです。

コールバックでaddone呼び出してるときには、引数には何もいれてないし、なぜ、モデルにコントローラ内からアクセス出来るようになるんだろう?と。

2012/09/02 11:54:32

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません