Жара и данни за жар: Как да използвам множество динамични сегменти с множество модели?

Опитвам се да създам инструмент за проследяване на проблеми в github с ember и ember данни. Приложният програмен интерфейс (API) на github е достъпен чрез сървър на възел (и работи добре), но имам проблеми при опитите да използвам динамичните сегменти на ember и не съм сигурен кой е най-добрият начин да структурирам моите маршрути и модели.

Как трябва да структурирам моите маршрути и модели, ако искам URL адресът да бъде /user/repo/issue?

Опитах всички различни комбинации от динамични сегменти и ресурси/маршрути...

this.resource('user', {path: ':user'}, function(){
  this.resource('repo', {path: ':repo'}, function(){
    this.resource('issue', {path: ':issue_id'});
  });
}); // 1

this.resource('repo', {path: ':userAndRepo'}, function(){
  this.resource('issue', {path: ':issue_id'});
}); // 2

this.resource('repo', {path: ':userAndRepo'});
this.resource('issue', {path: ':userAndRepo/:issue_id'}); //3

Но изглежда не мога да го накарам да работи гладко. Разкъсвам брадата си, опитвайки се да го разбера.

Най-близкото, което получих, беше да имам комбиниран сегмент за :userAndRepo, но за всички връзки към, които имах в моя шаблон за проблеми, трябваше изрично да задам този модел на IssuesController, така че моята връзка към да беше {{#link-to 'issues' userAndRepo issue}} Освен това моят API беше ударен всеки път, когато се преместих от дъщерния issue маршрут обратно в родителския repo маршрут.

Всякакви идеи или предложения ще бъдат високо оценени. Извинете, ако не съм се обяснил много добре.


person Iest    schedule 05.10.2013    source източник


Отговори (1)


Номер 1 е правилното изпълнение. Ето прост пример с вложени ресурси (бях мързелив и просто използвах pojos, но можете да видите кога куките на модела са засегнати).

http://emberjs.jsbin.com/EWogUdE/36/edit

http://emberjs.jsbin.com/EWogUdE/36#/

 App.Router.map(function () {
   this.resource('people', function(){
     this.resource('person', {path:':name'}, function(){
       this.resource('dog', {path:':dogname'});
     });
   });
 });
person Kingpin2k    schedule 06.10.2013