События в Backgrid.BooleanCell с Backbone.PageableCollection? - PullRequest
0 голосов
/ 29 марта 2019

Я использую 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
        });
...