Zustände in Ember.js ohne Verwendung von Routen?

8

Ich versuche zu verstehen, ob Staaten in Ember.js nur in einem Routenmanager definiert sind / angenommen werden, und ob Routen integraler Bestandteil von Ember sind. So ziemlich alle Anleitungen , die ich gesehen habe, scheinen davon auszugehen, dass Sie genau übereinstimmende Zustände und Routen wünschen.

Ich möchte Zustände erstellen, die nicht von Routen abhängig sind, sondern nur vom Status der Anwendung. Zum Beispiel könnte ich in einem E-Mail-Client den Status "userHasSpecifiedRecipient" haben. Nur wenn dieser Status wahr ist, kann ich das Meldungsfeld des Formulars aktivieren. Aber offensichtlich möchte ich nicht die URL sein:

myEmailClient.com#composingMessage_userHasSpecifiedRecipient_userIs... usw.

Gibt es Beispiele dafür?

Zweite Frage: Kann ich Zustände kombinieren, die mit Routen und Zuständen gekoppelt sind, die es nicht gibt?

Endlich: Ich habe einen Rat gesehen, der Leuten empfohlen hat, das sproutcore-statechart Addon zu verwenden, wenn sie Dinge wie gleichzeitig wollen Zustände. Ist das immer noch wahr?

    
Sam Fen 25.06.2012, 16:48
quelle

2 Antworten

4

In EmberJS gibt es eine Implementierung eines endlichen Zustandsautomaten , Ember.StateManager. Der StateManager verwendet Ember.State, um Zustände in der Zustandsmaschine darzustellen, die enter und exit -Funktionen usw. haben. Schauen Sie sich Klasse: Ember.StateManager .

Bei einem Beispiel, das den StateManager verwendet, verwendet die Ember.View diese, um die verschiedenen Zustände einer View zu verwalten. Ein anderes Beispiel ist Ember-Data, das einen Status-Manager verwendet, um die verschiedenen Zustände zu verfolgen, die ein Datensatz haben kann.

Um das Leben zu erleichtern und vorformulierten Code zu vermeiden, gibt es ein Router Implementierung in der neuesten Version von EmberJS, die immer noch sehr viel eine work-in-progress, mit Updates ein- oder zweimal pro Woche. Sie finden die neuesten Informationen auf den GitHub-Downloads .

Ember.Router ist die Unterklasse von Ember.StateManager , die für die URL-basierte Anwendungsstatuserkennung verantwortlich ist. Die Ember.Router -Instanz einer Anwendung erkennt die Browser-URL zum Zeitpunkt des Ladens der Anwendung und versucht, sie mit einem bestimmten Anwendungszustand abzugleichen. Zusätzlich wird der Router die URL aktualisieren, um die Statusänderungen einer Anwendung im Zeitverlauf widerzuspiegeln. ( JSDoc in Ember Quelle )

Darüber hinaus, da das Ember.Router erstreckt Ember.StateManager und Ember.Route erstreckt Ember.State , das ist untereinander austauschbar. In der Tat, nur einen Tag, ein geht mehr Unterstützung wurde aus der Mischung von Staaten und Routen zu unterstützen, finden Sie unter innerhalb grundlegende Staaten Unterstützung von Routen .

    
Schmuli 28.06.2012, 00:03
quelle
2

Sie können die Implementierung des Routerstandorts auf "none" setzen, um diese Funktionen zu deaktivieren. andere Methoden sind 'Hash' oder 'History' (mit dem aktuellen ember-latest.js auf github).

Ссылка

%Vor%     
quelle

Tags und Links