2014-02-05 4 views
0

Я создаю dGrids программно и добавляю слушатели для события, такие как «.dgrid-row: click», mouseUtil.enterRow и mouseUtil.leaveRow. Если я делаю это для одного сетки, было бы легко сделать что-то вроде этого, чтобы создать слушателя и удалить его, когда я закончил с сеткой.Удаление прослушивателей событий для Dojo dGrids

var clickEvent = dataGrid.on(".dgrid-row:click", gridSelect); 
//code 
clickEvent.remove(); 

Однако, я создаю несколько dGrids в цикле.

for (result in results) { 
    var dataGrid = new (declare([Grid, Selection, DijitRegistry, ColumnHider]))({ 
     id: "dgrid_" + result.name, 
     bufferRows: Infinity, 
     columns: result.columns, 
     selectionMode: "single", 
     "class": "resultsGrid" 
    }); 

    dataGrid.on(".dgrid-row:click", gridSelect); 
    dataGrid.on(mouseUtil.enterRow, gridEnter); 
    dataGrid.on(mouseUtil.enterRow, gridEnter); 

    dataGrid.renderArray(result.data); 
} 

Решетки добавляются в TabContainer. Каков наилучший способ удалить всех слушателей, когда я t избавился от TabContainer?

ответ

1

Поскольку вы используете собственный метод сетки on, он автоматически удалит эти прослушиватели, когда вызывается метод сетки destroy (особенно в старых IE, более новые браузеры должны иметь возможность собственно GC самостоятельно).

Поскольку вы смешиваете в DijitRegistry, ваш TabContainer должен автоматически уничтожать решетки при закрытии соответствующих вкладок или уничтожении самого контейнера.

+0

Спасибо. Я подозревал, что это так, но я хотел быть уверенным в этом. – kenbuja

Смежные вопросы