EmberJS路由:从父级创建子路由

时间:2012-07-17 03:19:50

标签: ember.js ember-old-router

我正在尝试创建一个在父级上添加子实体的路由。我的路由器看起来像这样。我在父母的节目中有一个嵌套路线,我很确定这是错误的。这样做似乎会阻止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"

1 个答案:

答案 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"

手指越过了,其他一切也得到了解决。