2013-05-09 2 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

ответ

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

+0

О да, хорошо! – intuitivepixel

+0

Да, это работает! И если вы хотите добавить модель, просто передайте ее как второй параметр. App.Router.router.generate (['post.edit'], postModel); Спасибо, ребята =] – aar0n

Смежные вопросы