使用Slick.Dataview只會複製你的集合的一些功能(排序,過濾,CRUD ..),但你應該檢查它看它是如何與Slick.Grid進行交互的。
如果你看一下Slick.Grid代碼,你可以看到,它只是利用數據視圖的3個功能 .getLength(),.getItem()和.getItemMetadata()和最後一個是不強制執行。 所以Slick.Grid基本上是'View'組件,只讀'Data'(Dataview),但'Controller'在哪裏?
那麼你要實際執行它,你可以在'SlickGrid Example 4'找到一個例子。
這個例子中最重要的部分是在這個片段:
// wire up model events to drive the grid
dataView.onRowCountChanged.subscribe(function (e, args) {
grid.updateRowCount();
grid.render();
});
dataView.onRowsChanged.subscribe(function (e, args) {
grid.invalidateRows(args.rows);
grid.render();
});
這兩個事件(onRowCountChanged,onRowsChanged)當您在數據視圖中添加,刪除,更新的行會被解僱,並使用有功能你逝去該信息發送給Grid。
所以基本思路是做同樣爲您Mongo.Collection而據我可以看到Mongo.Cursor有 .observeChanges()這有點類似.onRowsChanged
結帳SlickGrid API在源文件末尾。
處理您的網格使用不同的方法失效.invalidate(所有)行(S)(更新項目有效嘗試)也.updateRow()和.updateCell()甚至更精確的控制。
這些大多是方法來處理視圖更新:
"render": render,
"invalidate": invalidate,
"invalidateRow": invalidateRow,
"invalidateRows": invalidateRows,
"invalidateAllRows": invalidateAllRows,
"updateCell": updateCell,
"updateRow": updateRow,
"getViewport": getVisibleRange,
"getRenderedRange": getRenderedRange,
"resizeCanvas": resizeCanvas,
"updateRowCount": updateRowCount,
"scrollRowIntoView": scrollRowIntoView,
"scrollRowToTop": scrollRowToTop,
"scrollCellIntoView": scrollCellIntoView,
"getCanvasNode": getCanvasNode,
"focus": setFocus,
如果你需要與你的用戶交互電網訂閱事件並相應地更新您的收藏。
"onScroll": new Slick.Event(),
"onSort": new Slick.Event(),
"onHeaderMouseEnter": new Slick.Event(),
"onHeaderMouseLeave": new Slick.Event(),
"onHeaderContextMenu": new Slick.Event(),
"onHeaderClick": new Slick.Event(),
"onMouseEnter": new Slick.Event(),
"onMouseLeave": new Slick.Event(),
"onClick": new Slick.Event(),
"onDblClick": new Slick.Event(),
"onContextMenu": new Slick.Event(),
"onKeyDown": new Slick.Event(),
"onAddNewRow": new Slick.Event(),
"onValidationError": new Slick.Event(),
"onViewportChanged": new Slick.Event(),
"onColumnsReordered": new Slick.Event(),
"onColumnsResized": new Slick.Event(),
"onCellChange": new Slick.Event(),
"onActiveCellChanged": new Slick.Event(),
"onActiveCellPositionChanged": new Slick.Event(),
"onDragInit": new Slick.Event(),
"onDragStart": new Slick.Event(),
"onDrag": new Slick.Event(),
"onDragEnd": new Slick.Event(),
"onSelectedRowsChanged": new Slick.Event(),