Я использую Backbone.js и Backgrid.BooleanCell, чтобы позволить пользователям отмечать флажок в логической ячейке для выбора строки.Проблема в том, что я также использую Backbone.PageableCollection, и когда пользователь сортирует коллекцию или страницы на другую страницу, его флажок снимается, и я теряю ввод пользователя.
Я посмотрел, чтобы увидеть, какие события открываютсяBackbone.PageableCollection и Backgrid.BooleanCell, и я не вижу ничего в документации.
У меня есть двоякий вопрос: могу ли я запретить действиям подкачки / сортировки удалить выбор пользователя и установить обработку этих событий (сортировка, пейджинг) в качестве возможного обходного пути?
Код выглядит следующим образом:
window.UserCollection = Backbone.PageableCollection.extend({
model: window.ShowUser,
urlRoot: 'blah.com',
state: {
firstPage:1,
pageSize:16
},
mode: "client", // page entirely on the client side
});
window.CollectionView = Backbone.View.extend({
template: _.template($('#CollectionTemplate3').html()),
initialize: function(options) {
this.listenTo(this.eventAggregator, "showDifferentUser", this.resetTickBoxes);
var columns = [
{
name: '', //tickboxes have no name...
label: 'Select',
cell: Backgrid.BooleanCell.extend({
events : {
'change': function(ev){
var $checkbox = $(ev.target);
var $checkboxes = $('.backgrid input[type=checkbox]');
// Disable all checkboxes but this one
$checkboxes.attr("disabled", true);
$checkbox.removeAttr("disabled");
// do more stuff here...
}
}
})
}, {
name: "id", // The key of the model attribute
label: "ID", // The name to display in the header
editable: false, // By default every cell in a column is editable
cell: "string"
}, {
name: "last_name",
label: "Surname",
editable: false, // Display only!
cell: "string" // This is converted to "StringCell" and a corresponding class in the Backgrid package namespace is looked up
}];
<more code here>
// instantiate collection
var userCollection = new window.UserCollection;
// Set up a grid view to use the pageable collection
var userGrid = new Backgrid.Grid({
columns: columns,
collection: userCollection
});
// Initialize the paginator
var paginator = new Backgrid.Extension.Paginator({
collection: userCollection
});