在我的应用程序中,有一个客户端供会员选择瓶子和管理部分来管理成员,瓶子,储物柜等都使用相同的模型,所以我认为我的路由器应该是这样的:
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"
我了解admin下的资源将替换具有相同名称的成员的资源。
解决这个问题的最佳模式是什么?
我目前的解决方案是命名空间(有点?)这样的资源:
@.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的相关讨论:
https://github.com/emberjs/ember.js/issues/683 https://github.com/emberjs/ember.js/pull/1925
答案 0 :(得分:1)
如果您声明嵌套资源,则其名称必须包含以dot结尾的父资源名称:'members.member','members.member.bottles'等。尾部路径的名称更简单('signin'insted of'member 。登入')。 您可以借助chrome extension(Ember Inspector)来观察所有应用程序的路径。
9月14日更新
我曾经使用旧版本的Ember,不知何故错过了路由系统的更新。在上一个Ember版本(1.7.0)中无需this.resource
调用。这意味着您只能使用this.route
方法,这更方便,更清晰:http://emberjs.jsbin.com/bukogojuzeni/1/edit?html,js,output