0

我正在尝试创建一条路由以在父级上添加子实体。我的路由器看起来像这样。我在父母的节目中有一条嵌套路线,我很确定这是错误的。这样做似乎停止了页面转换之间的 URL 更改,并且当我从父模板通过 导航到 addChild 路由时{{action doAddChild href=true}},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"
4

1 回答 1

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"

手指交叉也解决了其他所有问题。

于 2012-07-17T07:33:32.120 回答