Ember, der die Aktualisierung auf Route aufruft, bewirkt nicht, dass die renderTemplate aufgerufen wird

8

Ich wollte die Seite automatisch aktualisieren lassen, sobald eine Eigenschaft des Controllermodells aktualisiert wurde.

Ich befolge diesen Tipp: Wie man die aktuelle Route in Ember nachlädt. js?

Also, ich habe eine Aktionsmethode "runSimulation" in meinem Controller, am Ende davon habe ich diese Zeile:

%Vor%

In der zugehörigen Route habe ich:

%Vor%

Ich konnte sehen, dass YEAH gedruckt wird (was bedeutet, dass das vom Controller gesendete Ereignis "sessionChanged" erfolgreich vom Handler im Routenobjekt abgefangen wurde) ..., aber DINGDONG wird nicht gedruckt.

Ich benutze ember-cli, und ich habe den Log-Übergang aktiviert. Ich konnte das in meiner Javascript-Konsole sehen:

%Vor%

(was erwartet wird). Ich nehme an, dass der Übergang zu "gobernadores.gobernador.simulacion" dazu führt, dass das renderTemplate aufgerufen wird (was aus irgendeinem Grund hier nicht passiert).

Was könnte uns hier einen Hinweis geben, vielleicht der Wert des "Übergangs" -Objekts, das von der Ausführung von "Aktualisieren" zurückgegeben wurde. In meinem Fall gibt es:

%Vor%

Dieses "isActive" ist falsch. Könnte es die Ursache sein? Wenn ja, warum "isActive" falsch ist?

Ich habe das API-Dokument von Ember.Route :: refresh ( Ссылка ) geprüft. .

  

Aktualisieren Sie das Modell auf dieser Route und auf allen untergeordneten Routen und feuern Sie die Hooks beforeModel, model und afterModel auf ähnliche Weise wie beim Eingeben von Routen aus einer anderen Route. Die aktuellen Routenparameter (z. B. article_id) werden an die jeweiligen Modell-Hooks übergeben. Wenn ein anderes Modell zurückgegeben wird, werden auch setupController und zugehörige Routen-Hooks erneut ausgelöst.

Also ... vielleicht geht meine Frage auf ...: Welche Bedingungen sollten für die Refresh-Methode der Route erfüllt sein, um einen Übergang zurückzugeben, dessen IsActive wahr ist?

Ich benutze ember 1.10.0

Danke, Raka

AKTUALISIEREN

Ich lege diesen Link hierher ..., nur für den Fall, dass er bei der Analyse der Situation hilft: Ссылка

    
Cokorda Raka 14.02.2015, 08:39
quelle

2 Antworten

6

Ich weiß nicht, warum refresh nicht rendert, aber warum rufst du nicht einfach renderTemplate selbst an?

Aber im Grunde ist dies ein Anti-Pattern. Sie versuchen im Wesentlichen, Ihre eigenen Unterrouten mit jeweils einer eigenen Vorlage zu verwalten, indem Sie sich daran erinnern, welche Sie wollen und sich auf der rechten Seite rendern lassen. Aber das macht der Ember-Router zum Lebensunterhalt. Erstellen Sie einfach mehrere Unterrouten - eine für die Crear-Simulation und eine für die Show-Simulation und lassen Sie Ember die Arbeit machen.

Angenommen, Sie möchten die Dinge auf diese Art und Weise tun, indem Sie Vorlagen ein- und auslagern, ist Ihr Ansatz immer noch nicht sehr Glimm-artig. Sie sollten die Eigenschaft templateName auf der Route verwenden. Setzen Sie einen Beobachter darauf, um den Standardwert renderTemplate aufzurufen, wenn sich dieser ändert. Befreie deine benutzerdefinierte renderTemplate

    
user663031 16.05.2015, 11:35
quelle
-1

Was ich getan habe, war, wie Torazaburo anfänglich sagte, renderTemplate() manuell aufzurufen. Sie können dies tun, indem Sie true in Ihrer sessionChanged -Aktion im Controller angeben, wenn Sie sie stattdessen dort implementieren möchten. Dadurch wird die Aktion auf Ihre Route übertragen. Aktivieren Sie dann innerhalb Ihrer Route die gleiche sessionChanged -Aktion (wie Sie es bereits getan haben) und rufen Sie this.renderTemplate() auf.

Was mir auch aufgefallen ist: Wenn der Benutzer sich nicht auf der angegebenen Route befindet, wird die Aktion nicht mehr auf die Route vom Controller übertragen (auch wenn Sie dorthin wechseln), und Ihre Route-Aktion wird nicht aufgerufen nicht mehr. In diesem Fall wird stattdessen setupController() aufgerufen. Dachte, es war erwähnenswert.

    
Bogdan Zurac 19.05.2015 11:24
quelle

Tags und Links