Aurelia: statisches benutzerdefiniertes Element in der Singleton-Ansicht

9

Ich habe eine Aurelia-Anwendung mit einem Singleton-View-Modell. Die Ansicht ähnelt einem Dateibrowser mit einer Baumansicht (benutzerdefiniertes Element) auf der linken Seite und einer Listenansicht auf der rechten Seite. Das Ansichtsmodell activationStrategy ist invokeLifecycle und die Listenansicht wird basierend auf den Routenparametern gefüllt. Die Baumansicht wird mit AJAX-Aufrufen gefüllt, wenn ein Knoten erweitert wird. Die Baumknoten sind auch ein benutzerdefiniertes Element. Die Baumansicht ist vollständig benutzerdefiniert und verwendet keine Plugins von Drittanbietern.

Wenn der Benutzer zu einer anderen Route navigiert und dann wieder auf dieselbe Route zurückkehrt, wird das Ansichtsmodell beibehalten, da es sich um ein Singleton handelt. Die Baumansicht wurde jedoch nicht angezeigt, da benutzerdefinierte Elemente nicht als Singletons unterstützt werden.

Ich verstehe die Gründe dafür, Singleton-benutzerdefinierte Elemente nicht zu unterstützen. Ich würde jedoch gerne wissen, was der beste Ansatz wäre, um irgendwie eine "statische" Baumansicht zu erstellen, wenn ich zur selben Route zurück navigiere. Das einzige, was ich bis jetzt herausgefunden habe, ist, eine vollständige (erweiterte) Baumstruktur in einem injizierten geteilten Zustand zu halten. Das scheint mir jedoch ineffizient zu sein, da die Baumansicht ohne Grund neu dargestellt werden muss und mein Code unnötigerweise mit zusätzlichen Klassen und Logik zum Erstellen einer Baumstruktur verkompliziert wird, während die Baumstruktur bereits im benutzerdefinierten Element enthalten ist. p>

Jede Eingabe ist erwünscht.

    
Carvellis 17.08.2017, 08:50
quelle

1 Antwort

2

Mein Ansatz wäre, das benutzerdefinierte Element der Baumansicht auf app.html wie die nav-bar (außerhalb von .page-host ) in der Navigationsskelett . Dann sollte das benutzerdefinierte Element nicht erneut durch Änderung der Route gerendert werden.

Es scheint, dass eine ähnliche Situation, wie die, die Sie haben, in Aurelia docs beschrieben wird. Lesen Sie dieses Tutorial . Auch aus dem Tutorial:

  

Das router-view wird von Aurelia bereitgestellt und ist ein Platzhalter, der angibt, wo der Router die aktuelle Route rendern soll.

Falls Sie die Baumansicht aufgrund bestimmter Umstände ändern oder routen müssen, kann der Ereignisaggregator in Ihrem benutzerdefinierten Baumstrukturelement verwendet werden, um solche speziellen Fälle zu behandeln. Das Lernprogramm zeigt auch die Verwendung von Ereignisaggregator zum Synchronisieren der benutzerdefinierten Elemente (siehe dieser Teil ).

Hoffe, das hilft.

    
Sayan Pal 28.08.2017 18:39
quelle