通过绑定到多个SlickGrid的onSelectedRowsChanged获取错误的实例

时间:2013-12-19 07:57:32

标签: javascript jquery slickgrid

我在一个对象中有两个slickGrids:

instances: {
  registered: {
    selector: '##one',
    slickGrid: null
  },
  registeredPending: {
    selector: '##two',
    slickGrid: null
  }
}

它们都填充了从AJAX请求中获取的数据并创建了网格:

success: function(ajaxData) {
    var data = [];
    // ... parse ajaxData to data

    //instance is either instances.registered or instances.registeredPending
    instance.slickGrid = new Slick.Grid(instance.selector, data, grid.columns, grid.options);
    instance.slickGrid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow: false}));
    instance.slickGrid.registerPlugin(checkboxSelector) //Add checkbox plugin
    instance.slickGrid.onSelectedRowsChanged.subscribe(function(e, data){
        //data.grid is last created slickGrid instance, instead of slickGrid of selected rows
        //It seems data.rows are the selected rows of the right slickGrid table!
    }
}

一切正常,只有对onSelectedRowsChanged事件的订阅不能正常工作。事件响应很好,但它返回最后创建的实例,而不是更改行的实例。

修改

要清楚,两个实例都是在AJAX事件的成功回调之后进行的。所以在我的情况下,进行两次调用,都返回数据;之后,创建一个网格来表示数据。

1 个答案:

答案 0 :(得分:0)

我在阅读此Google网页后发现了问题:https://groups.google.com/forum/#!topic/slickgrid/mKZzBxl2cVM

我确实有两个实例,但是他们都使用相同的checkboxSelector变量注册了Checkboxselectcolumn插件。结果交织在一起。

知道这一点,修复它很容易。为每个实例添加一个变量:

instances: {
   registered: {
     selector: '##one',
     slickGrid: null,
     checkboxSelector: new Slick.CheckboxSelectColumn({ cssClass: "slick-cell-checkbox" })
   },
   registeredPending: { ... }
}

在注册插件时使用那个。

success: function(ajaxData) {
   ...
   instance.slickGrid.registerPlugin(instance.checkboxSelector)
}