에 대한 onSelectedRowsChanged에 바인딩 잘못된 인스턴스를 얻을 나는 하나의 객체에 두 개의 slickGrids 가지고 : 그들 모두가 AJAX 요청에서받은 데이터로 가득여러 SlickGrid
instances: {
registered: {
selector: '##one',
slickGrid: null
},
registeredPending: {
selector: '##two',
slickGrid: null
}
}
를 그리드가 생성됩니다
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 이벤트의 succes에 콜백 이후에 만들어집니다. 따라서 제 경우에는 두 번의 호출이 이루어지며 둘 다 데이터를 반환합니다. 그 후에 그리드가 생성되어 데이터를 나타냅니다.
나는 당신이 ObjectInstance가 아니라 ObjectType에 이벤트를 추가한다고 생각합니다. 함수를 한 번 정의하고 필요할 때마다 호출하려고합니다. 'Slick.Grid.onSelected.subscribe (function (e, data) {}); ' – EricG
@ EricG : 문서 (https://github.com/mleibman/SlickGrid/wiki/Grid-Events)에 따르면, gridInstance를 구독하십시오. 모든 인스턴스가 자신의 범위에 있고 (그리고 자신의 바인딩을 듣는 것처럼) 내게 논리적 일 것입니다. –
오케 나는 그것을 얻는다. 그런데 잘못된 인스턴스를 구독하지 않습니까? – EricG