2017-06-29 4 views
0

Ich kann Slickgrid mit normalen Gittern in GoldenLayout verwenden.Verwenden von Slickgrid-Datenansicht in Goldenlayout

aber ich versuche, Dataview zu implementieren und ich habe Probleme mit dem onRowCountChanged.subscribe Ereignisse:

var StockGridComponent = function (container, state) { 

    this._dataView = new Slick.Data.DataView(); 

    this._container = container; 
    this._state = state; 
    this._grid = null; 
    this._columns = [...]; 
    this._data = data; 
    container.on('open', this._createGrid, this); 

}; 

StockGridComponent.prototype._createGrid = function() { 

    this._grid = new Slick.Grid(
    this._container.getElement(), 
    this._dataView, 
    this._columns, 
    this._options 
); 

    this._grid.setSelectionModel(new Slick.CellSelectionModel()); 

    this._dataView.onRowCountChanged.subscribe(function (e, args) { 
    console.log(this); <-- return DataView 
    this._grid.updateRowCount(); <-- error: "Uncaught TypeError: Cannot read property 'updateRowCount' of undefined" 
    this._grid.render(); 
    } 
); 

denke ich, mein Problem ist, ich weiß nicht, wie man die Sache des _grid verweisen Objekt (Ich habe kein Javascript).

Jeder, der Goldenlayout mit SlickGrid Dataview verwendet, kann teilen, wie er seine SlickGrid-Komponenten erstellt?

Vielen Dank.

Antwort

0

Scheint mehr wie ein Kontextproblem für mich. In der _createGrid Methode definieren Sie den Kontext der äußeren this in einer Variablen und verwenden Sie das. Wie

StockGridComponent.prototype._createGrid = function() { 

    this._grid = new Slick.Grid(
    this._container.getElement(), 
    this._dataView, 
    this._columns, 
    this._options 
); 

    this._grid.setSelectionModel(new Slick.CellSelectionModel()); 
    var self = this; // store the context and use later 

    this._dataView.onRowCountChanged.subscribe(function (e, args) { 
    console.log(this); <-- this here will refer to context of callback method 
    self._grid.updateRowCount(); 
    self._grid.render(); 
    } 
); 

Hoffe das behebt das Problem.

+0

richtig, einfach und ordentlich, danke! – jackofnone

+0

Sie sind willkommen @jackofnone –