我有一个字段groupNumber
和number
的集合:
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,...),并且在单击其中一个组时,我会看到属于该组的数字。
如果将
groupNumber
和number
分为两个不同的集合,并使用iron-router
在组列表和属于组的数字列表之间导航,则可以轻松实现此目标。但是,如何使用同一集合中的两个字段来获取此信息呢?
最佳答案
您为什么不手动“分组”您的分组?
首先,获取所有组号。
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}}
关于meteor - meteor 中具有链接的多级列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31192490/