【发布时间】:2013-12-19 07:57:32
【问题描述】:
我在一个对象中有两个 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 事件的成功回调之后生成的。所以在我的情况下,进行了两次调用,都返回数据;然后创建一个网格来表示数据。
【问题讨论】:
-
我认为您的意思是在 ObjectType 上添加事件,而不是在 ObjectInstance 上。您想定义一次函数,然后随时调用它。
Slick.Grid.onSelected.subscribe(function(e, data){}); -
@EricG:根据文档 (github.com/mleibman/SlickGrid/wiki/Grid-Events),您需要订阅一个 gridInstance。对我来说是合乎逻辑的,因为每个实例都在它自己的范围内(并监听它自己的绑定)。
-
好的,我明白了。但是,您不是订阅了错误的实例吗..?
-
不,我在调用g后将监听器添加到registerPlugin函数(在succes函数内部)。编辑了我的代码,我的描述可能会导致 EricG 的假设。
标签: javascript jquery slickgrid