javascript - 对于多个 SlickGrid 绑定(bind)到 onSelectedRowsChanged 时得到错误的实例

标签 javascript jquery slickgrid

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

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 事件成功回调后创建的。所以在我的例子中,进行了两次调用,都返回数据;之后创建一个网格来表示数据。

最佳答案

我在阅读此 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)
}

关于javascript - 对于多个 SlickGrid 绑定(bind)到 onSelectedRowsChanged 时得到错误的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20676236/

相关文章:

javascript - 如何使用 dc.js 创建堆积条形图?

javascript - 在页面加载时获取数据并将其分配给 Vue JS 中的选择选项

javascript - html iframe vs jquery.load() 动态添加内容时(无 php 等)

javascript - SlickGrid-按一列中的多个值进行过滤?

javascript - 输入元素上未触发更改事件

slickgrid - 使用 Slickgrid 验证 onCellChange

javascript - jQuery,keyup 事件未触发

javascript - 扩展 jQuery 的 ajax 功能

jquery发送post数据而不定义url

javascript - 如何将从函数获取的变量传递给 onclick 事件