2

私はまだ Ember.js に慣れていません。ネストされたリソースの例には、次のように記載されています。

URL:        /post/:post_id/comments/new
Route Name: comments.new
Controller: App.CommentsNewController
Route:      App.CommentsNewRoute

これを考えると:

  1. 「post」は URL にあるのに、ルート名、コントローラー、またはルートに「post」がないのはなぜですか?
  2. 「投稿」の新しいコメントと別の領域の新しいコメントをどのように区別しますか?
  3. ルート作成コードに templateName オプションが表示されないので、これをコントローラーで設定しますか?

ありがとうございました!

編集:この質問は Ember Pre4 に関するものです。

4

4 に答える 4

6
  1. postは資源でcommentsあり、資源でありnew、ルートであるからです。ルートのパスは、最後のリソース名 (この場合は )から始まります。2 番目の質問で述べたように、これは問題だと認識しているので、.commentsPostCommentsNewController

  2. 現時点ではそれらを明確にすることはできませんが、これは 5 より前であると予想されます。

  3. templateNameビューを手動で挿入する場合を除き、a を指定する必要はありません。/#/petsの場合、 Ember は最初に を参照しApp.PetsRoute、検索/インスタンス化App.PetsControllerし、インスタンス化しますApp.PetsView。「ペットApp.PetsView」を持つテンプレートに挿入されます。data-template-name

于 2013-02-11T09:55:05.997 に答える
2

質問 3: ルート用にレンダリングされる TemplateName は、ここに記載されているメソッドを使用して設定できますthis.render: http://emberjs.com/guides/routing/rendering-a-template/

于 2013-02-11T07:09:32.153 に答える
1

コントローラーとルートの名前は、私が信じている最も近いリソースによって単純に決定されます。引用された例では、post は編集ルートを持つリソースであるため、PostEditController であり、Comment も (Post 内にネストされているにもかかわらず) リソースであるため、結果の Controller は、ネストされたルート「new」の CommentsController または CommentsNewController になります。

于 2013-02-11T09:47:14.650 に答える
0

コンソールでルート名とそれぞれのハンドラーを調べることで、マップの構造をよりよく理解できます。良いデバッグトリック:)

APP.Router.router.recognizer.names;
于 2013-02-11T18:01:02.053 に答える