Frage

Ich bin Annahme Backbone.js eine kleine Ecke eines zu machen bestehenden großen Web-App . Wenn dies gut geht, kann ich sehen, Backbone.js wächst die Gesamtheit der App umfassen, einige dringend notwendige Struktur zu einer organisch-gewachsenen Anwendung verleiht. Das ist das Vorwort. Nun zum Problem:

habe ich eine Auswahlbox, die dem Benutzer erlaubt, einen Leseplan auszuwählen. Wenn die Auswahl ändert, aktualisiert die Ansicht einen beschreibenden Text, eine Kalender-Schnittstelle und ein kleines Widget für die heutigen Messwerte als vollständige Kennzeichnung. Das Widget wird eine Checkbox für jede Lesung (einer oder mehr) in Eintrag von heute und einer Schaltfläche zu dem nächsten Tag Lesung fortgesetzt. (Sie können die aktuelle, nicht-Backbone-Version dieser Schnittstelle sehen (minus den Abschluss Schema) auf der rechten Seite von die bestehende App .

Was ist die angemessene Granularität für jede View? Ich habe die folgenden „knifflig Bits“ identifiziert:

  • Die Tab selbst, der alle enthaltenen Steuerelemente umfasst.
  • Die Auswahlbox
  • Der beschreibende Text, der auf das Auswahlfeld reagiert
  • Der Kalender, der auf das Auswahlfeld reagiert
  • Die Messwerte Widget, das eine Antwort auf die Select-Box und enthält:
    • Optional kann eine Schaltfläche "Start", die den aktuellen Plan aktiviert.
    • Wenn aktiviert, ein oder mehrere Kontrollkästchen, um einzelne Messwerte innerhalb der heutigen Eintrag entspricht.
    • Wenn aktiviert, eine Schaltfläche „Weiter“, den heutigen Eintrag und zeigt die nächst abgeschlossen ist.

Wenn jeder dieser Aufzählungspunkte bekommen einen eigenen View? Gerade die großen Stücke (Registerkarte Auswahlbox, widget)? Die erste wird in ganz wenigen Ansichten führen. Die erste scheint, wie es zu kompliziert Ansicht Implementierungen führen könnte. Was ist am besten?

Hinweis: Ich weiß, das als wild subjektive Frage interpretiert werden könnte, aber ich bin Einwickeln noch meinen Kopf um Backbone.js und Javascript / DOM MVC-Muster, und ich hoffe, dass gibt es einen schmalen „das ist, was beabsichtigt ist / funktioniert am besten“ von erfahrenen Praktikern Backbone.js. Dank!

War es hilfreich?

Lösung

Es gibt keine definitive Antwort auf Ihre Frage. Sie können an der Granularität von SproutCore für exemples einen Blick.

Sie können auch sehen http://vimeo.com/17186379 wo Yehuda Katz die Schwierigkeiten bei der Aktualisierung illustrieren verschiedene Stücke von der Seite.

Eine Möglichkeit, es zu betrachten wäre zu prüfen, welche Teil mit unterschiedlichen Modellwechseln / Ereignissen aktualisiert werden soll, und versuchen, die Wieder Rendering zu minimieren.

Leider sind keine guten Antworten, wie Sie wies darauf hin;)

Andere Tipps

In der Regel wird die Granularität Ihrer Ansichten abhängen, ein Gleichgewicht zwischen der Komplexität des jeweiligen Stück UI auf der Suche nach und über Fragmentierung von Ansichten in kleine Stücke. Ich würde wahrscheinlich nicht einen Blick für etwas so klein wie eine Schaltfläche (eine CSS-Klasse ist alles, was Sie wirklich dafür brauchen).

In Ihrem Fall würde ich wahrscheinlich eine Ansicht für den Kalender-Widget hat - so kann es leicht an anderen Stellen in der App wieder verwendet werden - und eine Ansicht für die gesamte Devotions Registerkarte. Der Rest kann durch Ereignis erfolgen verbindlich.

In Bezug auf Modell-Updates und Wieder Rendering, die ganze Idee mit Rückgrat ist, dass die Sorge von den Ansichten zu trennen. Modelle emittieren „change“ Ereignisse, wenn ihre Attribute ändern und unabhängig von Ansichten auf der Seite zu dem Zeitpunkt geschehen zu sein, und die Anzeige, dass bestimmte Daten des Modells werden über die Änderung informiert werden und können selbst aktualisieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top