Я использую Backbonejs и Backgrid и хотел бы настроить прослушиватель событий в представлении Backgrid, чтобы перехватывать события, инициируемые в другом представлении.Событие будет вызывать функцию для очистки установленного флажка.Я использую базовую концепцию агрегатора событий из превосходной статьи Дерика Бэйли о передаче событий между представлениями.
Я застрял в двух моментах:
1) Успешная передача событияв представлении Backgrid.
2) Определение того, какой флажок установлен для его очистки.
Код столбца My Backgrid выглядит следующим образом:
window.ShowCollectionView = Backbone.View.extend({
template: _.template($('#CollectionTemplate3').html()),
initialize: function(options) {
var isTickBoxSelected = false;
// Tie the method uncheckTickBox() to the view and not the aggregator.
_.bindAll(this, "uncheckTickBox");
options.vent.bind("uncheckTickBox", this.uncheckTickBox);
var columns = [
{
name: '',
label: 'Select',
cell: Backgrid.BooleanCell.extend({
events : {
'change': function(ev){
var $checkbox = $(ev.target);
var $checkboxes = $('.backgrid input[type=checkbox]');
if($checkbox.is(':checked')) {
$checkboxes.attr("disabled", true);
isTickBoxSelected = true;
// Disable all checkboxes but this one
$checkbox.removeAttr("disabled");
console.log("Box now checked");
} else {
// Enable all checkboxes again
$checkboxes.removeAttr("disabled");
isTickBoxSelected = false;
console.log("Box now UNchecked");
}
}
}
})
}, {
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>
// Set up a grid view to use the pageable collection
var userGrid = new Backgrid.Grid({
vent: vent,
columns: columns,
collection: userCollection
});