2013-05-09 76 views
4

鑑於以下路由器設置:如何檢索路線的路徑?

App.Router.map(function() { 
    this.resource('posts', function() { 
    this.route('new'); 
    this.resource('post', { path: ':post_id' }, function() { 
     this.route('edit'); 
    }); 
    }); 
}); 

是否有可能獲得路徑路由的

虛擬的例子:

App.Router.get('path', 'posts.new'); //=> "/posts/new" 

或用相似的模型:

App.Router.get('path', 'post.edit', model); //=> "/posts/1/edit" 
+3

也許你想看一看源代碼。 ['LinkView'](https://github.com/emberjs/ember.js/blob/master/packages/ember-routing/lib/helpers/link_to.js#L112-L117)實現了這一點 – MilkyWayJoe 2013-05-09 21:05:23

回答

4

試試這個在您的控制檯/開發工具:

App.Router.router.generate(['posts.new']); 

這應該輸出:

/posts/new 

並配有型號:

App.Router.router.generate(['post.edit'], postModel); 

將輸出

/posts/1/edit 

感謝@ MilkyWayJoe的參考! https://github.com/emberjs/ember.js/blob/master/packages/ember-routing/lib/helpers/link_to.js#L112-L117 :)

+2

只要記住這可能不會爲沒有實際對象的動態路由生成url(它沒有任何序列化!)。 – MilkyWayJoe 2013-05-09 21:39:20

+0

哦,是的,好點! – intuitivepixel 2013-05-09 21:40:21

+0

是的,那可行!如果您想添加模型,只需將其作爲第二個參數傳遞即可。 App.Router.router.generate(['post.edit'],postModel);謝謝你們=] – aar0n 2013-05-09 21:44:03