2012-07-17 95 views
0

我正在尝试创建一条路径在父项上添加子实体。我的路由器看起来像这样。我在父母的节目中有一条嵌套路线,我很确定是错误的。这样做似乎可以停止页面转换之间的URL更改,并且当我通过{{action doAddChild href=true}}从父项模板导航到addChild路由时,URL中的:parent_id未定义。我猜这是因为我没有在应该是父母的行为上设置背景,但是我从哪里得到?EmberJS路由:从父项创建子路由

达到此目的的最佳方法是什么?我显然是在b wrong错误的树...

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

您的模板中的某些父上下文中的动作是不是{{action doAddChild}}?你能发布模板/视图吗? – 2012-07-17 07:17:57

回答

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" 

手指交叉,修复一切为好。