残り火をいじってみると、モデルがコントローラーのcontentプロパティに保存されている場合もあれば、モデルがコントローラーで直接利用できる場合もあることがわかりました。しかし、これが事実であるとき、私は理解していません。
私のember MVCを組み立てたときに見つけた例で説明しましょう。
セットアップ A - 開始
Memberカスタムオブジェクト、対応するMemberRoute、MemberViewクラス、および という名前のテンプレートを定義しましたmember。- オブジェクトには、などの
Member属性がありました。idnickname - 注: フォームのコントローラー
MemberControllerは定義されていないため、ember の慣例により、独自にコントローラーを提供します。
セットアップ B - カスタマイズ
- セットアップ A と同じですが
MemberController、テンプレート内からトリガーされるいくつかのアクション メソッドを含む定義済みがあります。
奇妙な振る舞い(私が完全に理解していないもの)
- セットアップ A では、
Memberの属性を{{id}}orで直接参照できます{{nickname}}。 - セットアップBでは、
{{content.id}}またはを使用する必要があります{{content.nickname}}
emberのドキュメントに記載されているようにMemberView、
setupController : function(controller, member) {
controller.set('content', member);
},
では、なぜ違いがあり、どこに違いがあるのか を理解するのを手伝ってくれる人はいますか? 現在、私の推測は次のいずれかです
- テンプレートのコンテキストが異なること (おそらく、コントローラーのセットアップに欠落しているコード部分がありますか?)
また
- ember によって自動的に提供されるデフォルトのコントローラーには、カスタマイズされたコントローラーでは直接利用できない追加の魔法があります。
これを理解するための助けは大歓迎です。ここまで来るのにかなりの時間がかかりました。最初は、requireJS を使用したプロジェクトのセットアップによって導入されたモジュール化ではないかと考えました (まあ、それはまだ影響があると思います)。Ember は v1.0pre4 です。
前もって感謝します!パトリック