2014-02-05 153 views
0

我以编程方式创建dGrid并为诸如“.dgrid-row:click”,mouseUtil.enterRow和mouseUtil.leaveRow等事件添加侦听器。如果我正在为此电网,这将是很容易做这样的事情来创建的侦听器,并删除它,当我与电网完成。删除Dojo dGrid的事件侦听器

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。当我ge删除所有监听器时,最好的方法是什么摆脱TabContainer?

回答

1

由于您使用的网格自己on方法,当电网的destroy方法被调用时它会自动删除这些监听器(尤其是在旧IE,新的浏览器应该能够正常GC自己)。

由于您在DijitRegistry中混合,您的TabContainer应该在相应的选项卡关闭或容器本身被销毁时自动销毁网格。

+0

谢谢。我怀疑是这样,但我想确定它。 – kenbuja

相关问题