我正在尝试创建一个在父级上添加子实体的路由。我的路由器看起来像这样。我在父母的节目中有一个嵌套路线,我很确定这是错误的。这样做似乎会阻止URL在页面转换之间切换,当我从父模板通过{{action doAddChild href=true}}
导航到addChild路由时,URL中的:parent_id是未定义的。我猜这是因为我没有在应该是父母的动作上设置上下文,但我从哪里得到它?
实现这一目标的最佳方法是什么?我显然是在错误的树上咆哮......
App.Router = Ember.Router.extend
enableLogging: true
root: Ember.Route.extend
index: Ember.Route.extend
route: "/"
parents: Ember.Route.extend
route: "/parents"
doShow: Ember.Route.transitionTo('show')
index: Ember.Route.extend
route: "/"
connectOutlets: (router) ->
router.get("applicationController").connectOutlet "parents"
show: Ember.Route.extend
route: "/:parent_id"
doAddChild: Ember.Route.transitionTo('addChild')
modelType: App.Parent
connectOutlets: (router, parent) ->
router.get("applicationController").connectOutlet "parent", parent
addChild: Ember.Route.extend
route: "/addChild"
connectOutlets: (router) ->
router.get("applicationController").connectOutlet "addChild"
答案 0 :(得分:0)
你的第一个问题是你的表演路线。正如您所说它没有转换,这是因为路由器只能正确转换到叶节点。目前的答案是添加虚拟索引路径。
Router = Ember.Router.extend
enableLogging: true
root: Ember.Route.extend
index: Ember.Route.extend
route: "/"
parents: Ember.Route.extend
route: "/parents"
doShow: Ember.Route.transitionTo('show.index')
index: Ember.Route.extend
route: "/"
connectOutlets: (router) ->
router.get("applicationController").connectOutlet "parents"
show: Ember.Route.extend
route: "/:parent_id"
doAddChild: Ember.Route.transitionTo('addChild')
connectOutlets: (router, parent) ->
router.get("applicationController").connectOutlet "parent", parent
index: Ember.Route.extend
route: "/"
addChild: Ember.Route.extend
route: "/addChild"
connectOutlets: (router) ->
router.get("applicationController").connectOutlet "addChild"
手指越过了,其他一切也得到了解决。