Backgrid ловит события select-all

(Позвольте мне начать с того, что я новичок в Backbone и Backgrid.) Я использую Backgrid и расширение select-all, и у меня были проблемы с «отловом» события, когда select all срабатывает в моем содержащем/родительском представлении. Я хочу показать подробное представление, когда строка выбрана в основной сетке. Итак, мне нужно, чтобы событие выбора в сетке всплывало в родительском представлении, чтобы оно могло отображать детали в другом представлении.

var view = Backbone.View.extend({
    el: '.grid',
    initialize: function () {

        var columns = [{
            name: "id",
            label: "ID",
            editable: false,
            cell: "string"
        }, {
            name: "",
            label: "Action",
            cell: "select-row"
        }];

        var grid = new Backgrid.Grid({
            columns: columns,
            collection: this.collection
        });

        $("#backgrid").append(grid.render().$el);
    });
});

Теперь я думаю, что хочу добавить что-то подобное в представление

events: {
"backgrid:select": "<name of the function i want to call>"
}

Но это, кажется, не работает. Любая помощь будет оценена по достоинству.


person Dan    schedule 05.06.2013    source источник
comment
что это за селектор "backgrid:select"   -  person Sushanth --    schedule 06.06.2013
comment
я не понимаю, какой элемент должен вызывать событие. объект сетки?   -  person Daniele B    schedule 06.06.2013
comment
@Sushanth--backgrid:select - это имя события, которое запускается в расширении select-all посредством некоторого разделения кода (хотя, похоже, оно не всплывает в содержащем представлении). Я использовал это как пример имени события.   -  person Dan    schedule 10.06.2013
comment
@Daniele B, в столбце Action используется расширение backgrid select-all. тип ячейки select-row помещает флажок в сетку. У меня возникают проблемы с запуском события из флажка, и оно всплывает в содержащем представлении.   -  person Dan    schedule 10.06.2013
comment
Я смог ответить на свой вопрос... в представлении add....this.collection.on('backgrid:selected', function(model, selected) {//сделайте то, что мне нужно здесь});   -  person Dan    schedule 10.06.2013
comment
@Дэн отлично! Затем вы можете ответить на свой вопрос: это будет полезно для будущих пользователей с той же проблемой.   -  person Daniele B    schedule 11.06.2013


Ответы (1)


Я смог ответить на свой вопрос... в представлении добавить....

this.collection.on('backgrid:selected', function(model, selected) { 
   //do what i need here 
});

backgrid уже запускает событие backgrid:select (которое обрабатывается через модель), но также запускает событие backgrid:selected, всплывающее в коллекции... которое, в свою очередь, доступно через родительское представление.

Ссылку на официальную документацию API, указывающую на это, можно найти здесь

person Dan    schedule 11.06.2013