Backbone.js: Kommunikation zwischen Ansichten
Arbeite ich an ein Backbone-app, die enthält eine Liste von Einträgen, ähnlich wie die Beispiel-app Todos (http://documentcloud.github.com/backbone/examples/todos/index.html).
So, ich habe die App-Ansicht und eine Ansicht pro Listenelement. Nun, sagen wir ich habe eine Globale Schaltfläche "Bearbeiten". Die App anzeigen würde, Griff eine auf und was ich dann tun wollen ist, sagen jeder Liste anzeigen, eine Schaltfläche "löschen".
In den screenshots unten (von Spotify), wird durch drücken der Edit-Taste bewirkt, dass alle Listen-Ansichten zu Darstellung ändern.
Was ist der beste Weg, dies zu tun, mit Rückgrat. Ich muss iterieren über alle Listen-Ansichten, und rufen Sie eine editMode-Funktion. Aber die App-Ansicht (aus der box) weiß nicht über die Listen-Ansichten..
InformationsquelleAutor der Frage Sebastian | 2011-09-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schrieb ich einen Artikel eine Weile zurück auf ein paar verschiedene Optionen für die Koordination zwischen den Ansichten: http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/
in deinem Fall, würde ich empfehlen, mit dem event aggregator, beschreibe ich in diesem Artikel. Sie hätte jedes Element anzeigen, warten Sie auf den "editmode" Ereignis, oder etwas ähnliches. wenn dieses Ereignis ausgelöst wird, jeder Blick, hörte es aktualisieren würde, selbst in den Bearbeitungsmodus zu wechseln. dann würden Sie das Gegenteil tun, wenn Sie klicken Sie auf "fertig" - senden Sie ein "viewmode" Ereignis, oder etwas ähnliches, und haben jede Ansicht aktualisiert sich entsprechend.
InformationsquelleAutor der Antwort Derick Bailey
Meine zwei Cent: Es ist ein einfacher "hack", die Sie tun können, mit backbone.js tatsächlich ein pub/sub-kommunizieren kann zwischen den Ansichten:
Etwas entlang diesen Linien (ungetestet):
Dass Sie im Grunde erhalten die Idee. Nun für jede Ansicht, es haben "binden", um diese EventBus (da views können nur binden, Modelle/Kollektionen im "backbone") - die Sie im Grunde nur die Methode verwenden, die Namen zu veröffentlichen - /abonnieren-in Einklang mit der Nomenklatur der so ein Modell, aber Sie können wählen, nicht zu. Erstellen Sie einfach eine leere
EventBus
'Klasse' in diesem Fall und in jeder Ansicht zu binden 🙂So, in jeder Ansicht nur kombiniert werden muss, um diese
EventBus
und handeln auf die empfangenen events! Backbone.js verarbeitet intern alle Sanitär-dieses design-pattern, also haben Sie ziemlich viel bekommen Sie es kostenlos 🙂Den obigen code kann nicht ausgeführt werden, wie Sie ist, aber Sie ist da, um Ihnen eine Idee...
InformationsquelleAutor der Antwort PhD