Ember.js 复杂路由

Ember.js 复杂路由,ember.js,routing,coffeescript,Ember.js,Routing,Coffeescript,在我的应用程序中,有一个客户端供成员选择瓶子,还有一个管理部分用于管理成员、瓶子、储物柜等。它们都使用相同的型号,因此我认为我的路由器应该如下所示: App.Router.map -> @.route "signin" #Restuarant signs in to the application @.resource "member", -> @.route "signin" #Members sign in to see their bottles @.

在我的应用程序中,有一个客户端供成员选择瓶子,还有一个管理部分用于管理成员、瓶子、储物柜等。它们都使用相同的型号,因此我认为我的路由器应该如下所示:

App.Router.map ->
  @.route "signin" #Restuarant signs in to the application
  @.resource "member", -> 
    @.route "signin" #Members sign in to see their bottles
    @.resource "member", path: ":member_id", ->
      @.resource "bottles", ->
        @.route "select"
      @.resource "transcations", ->
        @.route "create"
        @.resource "transcation", path: ":transcation_id", ->
  @.resource "admin", ->        
    @.route "signin" #Restaurant signs in to manage
    @.resource "members", ->
      @.route "create"
      @.resource "member", path: ":member_id", ->
        @.resource "bottles", ->
          @.route "create"
          @.resource "bottle", path: ":bottle_id", ->
            @.route "edit"
        @.resource "transcations", ->
          @.resource "transcation", path: ":transcation_id", ->
    @.resource "lockers", ->
      @.route "create"
      @.resource "locker", path: ":locker_id", ->
      @.resource "lockertype", path: "types", ->
        @.resource "lockertype", path: ":locker_type_id", ->
          @.route "edit"  
        @.route "create"  
    @.resource "member", -> 
      @.route "m.signin" #Members sign in to see their bottles
      @.resource "m.member", path: ":member_id", ->
        @.resource "m.bottles", ->
          @.route "select"
        @.resource "m.transcations", ->
          @.route "create"
          @.resource "m.transcation", path: ":transcation_id", ->
我知道admin下的资源将替换同名成员的资源

解决这个问题的最佳模式是什么

我当前的解决方案是使用名称空间(有点?)将资源命名为:

App.Router.map ->
  @.route "signin" #Restuarant signs in to the application
  @.resource "member", -> 
    @.route "signin" #Members sign in to see their bottles
    @.resource "member", path: ":member_id", ->
      @.resource "bottles", ->
        @.route "select"
      @.resource "transcations", ->
        @.route "create"
        @.resource "transcation", path: ":transcation_id", ->
  @.resource "admin", ->        
    @.route "signin" #Restaurant signs in to manage
    @.resource "members", ->
      @.route "create"
      @.resource "member", path: ":member_id", ->
        @.resource "bottles", ->
          @.route "create"
          @.resource "bottle", path: ":bottle_id", ->
            @.route "edit"
        @.resource "transcations", ->
          @.resource "transcation", path: ":transcation_id", ->
    @.resource "lockers", ->
      @.route "create"
      @.resource "locker", path: ":locker_id", ->
      @.resource "lockertype", path: "types", ->
        @.resource "lockertype", path: ":locker_type_id", ->
          @.route "edit"  
        @.route "create"  
    @.resource "member", -> 
      @.route "m.signin" #Members sign in to see their bottles
      @.resource "m.member", path: ":member_id", ->
        @.resource "m.bottles", ->
          @.route "select"
        @.resource "m.transcations", ->
          @.route "create"
          @.resource "m.transcation", path: ":transcation_id", ->
有更好的办法吗?这样可怕吗?我一直在查找EMBER.NAMESPACE,但不知道如何使用它

关于github的相关讨论:


如果声明嵌套资源,则其名称必须包含以点结尾的父资源名称:“members.member”、“members.member.flags”等。尾路由的名称更简单(“signin”而不是“member.signin”)。 借助chrome extension(),您可以观察所有应用程序的路由

从9月14日起更新: 我习惯了旧版本的灰烬,不知何故错过了路由系统的更新。在上一个余烬版本(1.7.0)中,不需要调用此资源。这意味着您只能使用
This.route
方法,该方法更简单、更清晰: