多级列表,包含Meteor中的链接

时间:2015-07-02 18:56:40

标签: meteor iron-router

我有一个包含字段groupNumbernumber的集合:

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

我可以用

打印整个集合
{{#each numbers}}
  <tr>
    <td>{{groupNumber}}</td>
    <td>{{number}}</td>
  </tr>
{{/each}}

但我需要它作为链接。因此,在第一页我需要查看组号列表(1,2,3,...),当我点击其中一个组时,我会看到属于该组的号码。

如果我将groupNumbernumber拆分为两个不同的集合并使用iron-router在组列表和属于组的数字列表之间导航,我可以轻松实现此目的。但是,我怎样才能在同一个集合中的两个字段中得到它?

1 个答案:

答案 0 :(得分:5)

为什么不手动“分组”您的群组?

首先获取所有组号。

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

之后,简单的路线将完成这项工作:

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
          }
      }  
    }
  });
});

然后在your_template检查中,如果您有groupNumber,则显示所有数字 按YourCollection.find({groupNumber: this.groupNumber})

如果没有,那么只需渲染this.groups

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