2012-04-27 16 views
8

SlickGrid büyük olan bir tablo veya tadını veri görüntüleme odaklanmaktadır. Meteor, verileri manipüle etmeye odaklanır, ancak Minimongo'yu kullanır. SlickGrid, Minimonogo koleksiyonları ile nasıl entegre olabilir ve hızlı görüntüleme ve büyük veri işleme özelliklerini korur?SlickGrid'i Meteor.js reaktif koleksiyonlarıyla nasıl bütünleştirebilirim?

yanlış hissediyor ve biraz çirkin yapmanın Benim şu anki yol. Ben SlickGrid için ayrı dizi ve bazı tutkal kod yazmadan güncelleme işlemlerini yürütecek:

  • Sıralama: Meteor İşliyor, tam bir yenileme (yeniden ayarlama verileri)
  • ekleme/güncelleme tetikler/kaldırma: endam indeks ve ona
  • Filtreleme geçersiz: Meteor işliyor, tam bir yenileme (yeniden ayar verileri)

nasıl doğrudan SlickGrid Meteor veri imleci bağlayan ve bazı tutkal kodu ile sadece olayları ele olurdu tetikler? Veya Slick.dataview kullanılabilir mi? Amaç, hücre seviyesinde güncellemeleri ele almaktır.

cevap

2

sadece koleksiyonlarından bazı işlevlerinin (sıralama, filtreleme, CRUD ..) çoğaltmak istiyorum ama bunu Slick.Grid nasıl etkileşimde görmek için bunu kontrol etmelidir Slick.Dataview kullanma.

Eğer Slick.Grid koduna baktığımızda bunu sadece .getLength(), .getItem() ve .getItemMetadata() ve sonuncusu değildir Dataview 3 işlevlerini kullandığını görebilirsiniz uygulamak zorunludur. Yani Slick.Grid sadece 'Veri' (Dataview) ancak 'Kontrolör' dir okuma 'Görünüm' bileşeni temelde?

Eh aslında uygulamak ve size 'SlickGrid Example 4' de bir örnek bulabilirsiniz. Eğer geçiyoruz

// 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(); 
    }); 

Eğer Dataview Güncelleştirme satır ekleyebilir, çıkartabilir zaman ateş alacak bu 2 olayların (onRowCountChanged, onRowsChanged) ve orada işlevleri kullanarak: o örnek

En önemli kısmı bu snippet'te olduğunu Bu bilgiyi Grid'e.

Yani temel fikir Mongo.Collection için aynı şeyi ve bildiğim kadarıyla gördüğünüz gibi Mongo.Cursor .onRowsChanged biraz benzer .observeChanges() sahiptir etmektir

Ödeme SlickGrid Belgenin sonunda API kaynağında. Hatta daha hassas kontrol için verimli bir farklı geçersiz kılma yöntemleri .invalidate (Tümü) Row (ler) (kullanmayı deneyin güncellemeleri sizin Izgara işlemek için

) ve ayrıca .updateRow() ve .updateCell(). Yanınızda kullanıcı etkileşimi gerekirse

"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, 

Izgara etkinliklere abone ve buna göre güncelleştirmek:

Bunlar çoğunlukla görünüm güncellemelerini işlemek için yöntemlerdir.

"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(),