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而是路线。路由的路径最后一个资源名称开始,在本例中为comments。正如您在第二个问题中所解决的那样,我认为这是一个问题,所以我希望这会变成PostCommentsNewController.

  2. 您目前不会在它们之间消除歧义,但希望这会出现在前 5 中。

  3. templateName除非您手动插入视图,否则无需指定 a 。对于/#/pets , Ember 将首先咨询App.PetsRoute、定位/实例化App.PetsController和实例化App.PetsViewApp.PetsView将被插入到具有data-template-name宠物”的模板中。

于 2013-02-11T09:55:05.997 回答
2

问题 3:可以使用this.render此处记录的 -method 设置要为路由呈现的 TemplateName:http: //emberjs.com/guides/routing/rendering-a-template/

于 2013-02-11T07:09:32.153 回答
1

控制器和路由的名称仅由我相信的最近资源确定。在引用的示例中,post 是一个带有编辑路径的资源,因此 PostEditController 而 Comment 也是一个资源(尽管嵌套在 Post 中),因此生成的 Controller 是 CommentsController 或 CommentsNewController 的嵌套路由“new”。

于 2013-02-11T09:47:14.650 回答
0

通过在控制台中检查路线名称及其各自的处理程序,您可以更好地了解地图的结构。很好的调试技巧:)

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