我正在“Meteor.js Javascript Framework入门”一书中进行练习 有一个部分,其中创建了一个名为categories的模板,然后{#each}循环通过一个集合。这样做是为了将结果打印到屏幕上。这有效,代码如下。
<template name ="categories">
<div class ="title">my stuff</div>
<div id='categories'>
{{#each lists}}
<div id="category">
{{Category}}
</div>
{{/each}}
</div>
</template>
我的问题是:
在下面的代码中,sort参数似乎没有做任何事情。我很好奇应该做什么。据我所知,理论上它是“排序”,但是当我玩这些参数时,没有任何变化。我在流星文档中查了一下,我无法弄明白。我试图修改代码,以便它以不同的顺序排序。通过这种方式,我可以看到结果,并真正了解 {sort:的工作原理。我尝试将 {sort:{Category:1}})修改为 {sort:{Category:-1}})以及 {sort:{类别:2}}),它总是相同的结果。
Template.categories.lists = function() {
return lists.find({}, {sort: {Category: 1}}); // Works
/* return lists.find({}); */ // Works just the same
}
收藏如下:
lists.insert({Category:"DVDs", items: [{Name:"Mission Impossible" ,Owner:"me",LentTo:"Alice"}]});
lists.insert({Category:"Tools", items: [{Name:"Linear Compression Wrench",Owner:"me",LentTo: "STEVE"}]});
答案 0 :(得分:3)
在您的代码中,您可以尝试将排序的参数更改为数组而不是对象,如下所示:
sort: [["Category","asc"],["another argument","desc"],[...]]
所以代码:
Template.categories.lists = function() {
return lists.find({}, {
sort: [
["Category", "asc"],
["another argument", "desc"],
[...]
]
});
// return lists.find({}); // Works just the same
}
答案 1 :(得分:0)
根据我的理解,因为默认是按自然顺序排序。可在此link
找到更多信息