2012-07-17 93 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" 

手指交叉,修復一切爲好。

相關問題