目をクリックすると、ユーザーのテーブルを並べ替えようとしています。私のユーザーは:
- 名
- 姓
- 年齢
- ID
目をクリックすると、並べ替えが発生しますが:
- ユーザーを名または姓で並べ替えると、昇順でのみ機能します。
- ユーザーを年齢で並べ替えると、双方向に機能します
何か案が ?
これが私の見解です:
var UserListView = Backbone.View.extend({
el: ".page",
events: {
'click .delete': 'deleteUser',
'click th': 'sortItem',
},
initialize: function(){
this.users = new UsersCollection();
},
sortItem: function(ev) {
var that = this;
var field = ev.currentTarget.id;
this.users.sort_field(field);
this.render();
},
deleteUser: function(ev) {
var id = ev.currentTarget.dataset.userId;
var user = new UserModel({
id: id
});
user.destroy({
success: function() {
var userList = new UserListView();
userList.render();
}
})
},
render: function() {
var that = this;
this.users.fetch({
success: function(users) {
var template = _.template(UserListTemplate, {
users: users.models
});
that.$el.html(template);
}
});
}
});
そして私のコレクション:
var UsersCollection = Backbone.Collection.extend({
model: UserModel,
url: "/users",
initialize: function() {
this._compar = 'id';
this._sortDir = 'asc';
},
comparator: function(user) {
console.log(this._sortDir);
return this._sortDir == 'asc' ? user.get(this._compar) : -user.get(this._compar);
},
sort_field: function(field) {
this._compar = field;
this._sortDir = this._sortDir == 'asc' ? 'desc' : 'asc';
this.sort();
}
});