我有一个表,其中显示了几个项目。
<table>
...
<th scope="col">Priority <a id="sort"><i class="fas fa-chevron-down"></i></a> <a id="sort2">
<i class="fas fa-chevron-up"></i></a></th>
...
</table>
优先级为整数,分别为1、2和3。我正试着按按钮按项目排序。我设法通过使用collection.sort()
在我看来排序一次,它排序完美。如何通过单击sort2按钮反转排序?任何关于这方面的帮助是感激的。谢谢你。
app.views.ShareView = Backbone.View.extend({
el: ".page",
initialize: function () {},
events:{
"click #sort" : "sort",
"click #sort2" : "sort2"
},
sort: function (e){
e.preventDefault();
this.collection.comparator = 'priority_id';
this.collection.sort();
this.render();
},
sort2: function (e){
//reverse sort
}
render: function () {
template = _.template($('#share-template').html());
this.$el.html(template(app.userShare.attributes));
}
});
您需要使用排序比较器函数而不是comparator
属性。这允许您指定比较器函数,而不仅仅是属性。例如,
this.collection.comparator = function(firstModel, secondModel) {
if(firstModel.priority_id > secondModel.priority_id) { // change to < in order reverse the order
return -1;
}
else if(firstModel.priority_id === secondModel.priority_id) {
return 0;
}
else {
return 1;
}
}
this.collection.sort();
在BackboneJS中,如果您需要额外的功能,通常可以使用函数来代替值。