2015-07-02 14 views
9

Ho una collezione con campi groupNumber e number:lista livello di Multi con i link a Meteor

groupNumber, number 
================= 
1, 1 
1, 2 
1, 3 
1, 4 
2, 1 
2, 2 
2, 3 
2, 8 
3, 4 
3, 5 
... 

posso stampare l'intera collezione con

{{#each numbers}} 
    <tr> 
    <td>{{groupNumber}}</td> 
    <td>{{number}}</td> 
    </tr> 
{{/each}} 

ma ho bisogno di essere collegamenti, invece. Quindi alla prima pagina ho bisogno di vedere un elenco dei numeri di gruppo (1, 2, 3, ...) e quando ho cliccato su uno dei gruppi, vedo i numeri che appartengono a questo gruppo.

Potrei facilmente ottenere questo se avessi groupNumber e number divisi in due raccolte diverse e utilizzare iron-router per navigare tra l'elenco dei gruppi e l'elenco dei numeri appartenenti al gruppo. Ma come posso ottenere questo con i due campi della stessa collezione?

risposta

5

Perché non "raggruppare" i gruppi manualmente?

In un primo momento ottieni tutti i tuoi numeri di gruppo.

var allValues = YourCollection.find().fetch(); 
var uniqueGroups = _.union(_.pluck(allValues, 'groupNumber')) //outputs [1,2,3] 

Dopo di che, percorso semplice farà il lavoro:

Router.route('/group/:groupNumber?', function() { 
    this.render('your_template', { 
    data: function() { 
     if(this.params.hasOwnProperty('groupNumber')){ 
      return { 
      groupNumber: this.params.groupNumber 
      } 
     } else { 
      var allValues = YourCollection.find().fetch(); 
      var uniqueGroups = _.union(_.pluck(allValues, 'groupNumber')) 
      return { 
       groups: uniqueGroups 
      } 
     } 
    } 
    }); 
}); 

Poi, nel your_template controllo, se avete groupNumber, mostrare tutti i numeri da YourCollection.find({groupNumber: this.groupNumber})

se no, allora solo il rendering this.groups:

{{#each groups}} 
<a href="/group/{{this}}">{{this}}</a> 
{{/each}} 
+0

Cosa succede se ho due livelli in più? group1', 'group2',' group3' e 'group4'? – Jamgreen

+0

Stai davvero chiedendo un paradigma UX invece di usare le rotte. –

+1

La stessa logica si applica con> 1 livello di nidificazione o anche annidamento ricorsivo. L'unica cosa che sembra mancare alla risposta di @Zuzel è l'ordinamento che presumibilmente vuoi fare ad ogni livello. –

Problemi correlati