我有一个显示在页面上的集合:
Template.body.helpers({
chansonsFutures(){
return Chansons.find({
"playedStatus":false
},{
sort : { score:-1 }
});
},
});
我希望用户能够更改集合的排序方式。在示例中,它按score
排序,但我将如何按其他方式排序?
我有一个select
:
<select id="ordre">
<option value="shuffle">Aléatoire</option>
<option value="vote">Vote</option>
<option value="lastAdded">Dernier Ajout</option>
</select>
但如果我在if
中添加Template.body.helpers
条件,meteor会告诉我的应用程序有错误并且正在等待文件更改。如果我将条件放在Template.body.events
中并将其与我change
的{{1}}相关联,那么它也会给我错误。
我该怎么办?
编辑:回答@Justinas,这是我把条件放在代码中的方式。
我的第一次尝试是直接帮助:
select
另一种方式是这样的:
Template.body.helpers({
if(document.getElementById("ordre").value == "lastAdded"){
chansonsFutures(){
return Chansons.find({
"playedStatus":false
},{
sort : { lastAdded:-1 }
});
},
};
else if (other value for the select) {
other stuff happens
};
});
答案 0 :(得分:2)
这是你需要在js文件中添加的内容:
通过defalult它将得分&#39;得分&#39;并且在更改选择值时它会相应地改变。
Template.body.onCreated(function() {
this.sortBy = new ReactiveVar('score');
})
Template.body.helpers({
chansonsFutures : function(){
var sortParam = Template.instance().sortBy.get();
return Chansons.find({
"playedStatus":false
},{
sort : { sortParam:-1 }
});
},
});
Template.body.events({
'change #ordre':function (event,templateInstance) {
var sortSelected = $('#ordre option:selelcted').val();
templateInstance.sortBy.set(sortSelected)
}
})