2014-02-05 199 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

相關問題