Wie kann ich SlickGrid in reaktive Meteor.js-Sammlungen integrieren?

8

SlickGrid konzentriert sich auf die Anzeige der Daten aus einer Tabelle oder einem Array, was großartig ist. Meteor konzentriert sich auf die Manipulation der Daten, verwendet aber Minimongo. Wie kann SlickGrid in Minimonogo-Sammlungen integriert werden und seine schnelle Anzeige und große Datenverarbeitungsfähigkeiten beibehalten?

Meine derzeitige Art, es zu tun, fühlt sich falsch an und ist etwas hässlich. Ich habe ein separates Array für SlickGrid und schreibe etwas Kleber-Code, um Update-Ereignisse zu behandeln:

  • Sortierung: Wird von Meteor gehandhabt, löst eine vollständige Aktualisierung (Neueinstellung der Daten) aus
  • add / update / remove: Index herausfinden und ungültig machen
  • Filtering: Handled by Meteor, löst eine vollständige Aktualisierung aus (Daten werden zurückgesetzt) ​​

Wie würde ich den Meteor-Datencursor direkt an SlickGrid binden und nur Ereignisse mit etwas Klebecode behandeln? Oder kann Slick.dataview verwendet werden? Das Ziel ist, Updates auf Zellebene zu behandeln.

    
thomasf1 27.04.2012, 19:16
quelle

1 Antwort

2

Die Verwendung von Slick.Dataview würde nur einige Funktionen (Sortieren, Filtern, CRUD ..) Ihrer Sammlungen duplizieren, aber Sie sollten es überprüfen, um zu sehen, wie es mit Slick.Grid interagiert.

Wenn Sie Slick.Grid Code betrachten, können Sie sehen, dass es nur 3 Funktionen von DataView verwendet .getLength () , .getItem () und .getItemMetadata () und das letzte muss nicht implementiert werden. Also Slick.Grid ist im Grunde "View" -Komponente nur lesen "Data" (Dataview) aber wo ist der "Controller"?

Nun, Sie müssen es tatsächlich implementieren und Sie finden ein Beispiel in SlickGrid Beispiel 4 '.

Der wichtigste Teil dieses Beispiels ist in diesem Code-Schnipsel:

%Vor%

Diese 2 Ereignisse (onRowCountChanged, onRowsChanged) werden ausgelöst, wenn Sie Zeilen in Dataview hinzufügen, entfernen, aktualisieren und dort Funktionen verwenden, die Sie an Grid übergeben.

Grundidee ist es, das gleiche für Ihre Mongo.Collection zu tun und soweit ich Mongo.Cursor sehen kann .observeChanges () ist etwas ähnlich wie .onRowsChanged

Checkout SlickGrid API in der Quelle am Ende des Dokuments.

Um Ihre Grid-Aktualisierungen effizient zu handhaben, versuchen Sie es mit verschiedenen Ungültigmachungsmethoden .invalidate (All) Row (s) () und auch .updateRow () und . updateCell () für noch genauere Kontrolle.

Dies sind meist Methoden zum Verwalten von Ansichtsupdates:

%Vor%

Wenn Sie eine Benutzerinteraktion mit Ihrem Grid benötigen, abonnieren Sie Ereignisse und aktualisieren Sie Ihre Sammlung entsprechend.

%Vor%     
Bizniztime 12.12.2014 12:12
quelle