Ich erstelle eine App mit der Spotify-API. Die App kann: 1. Finden Sie Alben nach Künstlernamen über ein Eingabefeld 2. Sobald die Alben angezeigt werden, kann der Benutzer auf den Titel des Albums klicken und die Titel dieses Albums sehen.
Ich habe 2 Ansichten erstellt: 1. die Albenansicht 2. Tracks anzeigen, Kind von Alben anzeigen.
Ich möchte die Titel-UI-Ansicht eines bestimmten angeklickten Albums - mit is ID - in die ng-Wiederholung des Albums zeigen. aber das Ergebnis ist, dass ich die selbe Titelliste des angeklickten Albums in allen Albumlisten habe. Wie kann ich die Track-UI-Ansicht des Albums in dem angeklickten Album-Container anzeigen, der das Ergebnis einer ng-repeat-Direktive ist?
hier der Code:
die Route:
%Vor%Die Albumansicht:
%Vor%Hauptalben Controller:
%Vor%Der Titel-Controller:
%Vor%Was du versuchst zu tun, ergibt keinen Sinn. Einem Bundesstaat können mehrere Ansichten zugeordnet sein, diese Ansichten müssen jedoch vordefiniert , nicht dynamisch generiert sein.
Es besteht ein Konflikt zwischen dem Code, in dem Sie statisch Ihre Nur eine Ansicht definieren :
%Vor% und der Code, in dem Sie dynamisch ui-view mit ng-repeat
generieren. Es gibt keine Logik, um zu sagen, auf welchen ui-view
Sie Ihren HTML-Code laden können. In diesem Fall schlage ich vor, nur 1 ui-view
zu haben, indem ich ihn aus ng-repeat
verschiebe:
Oder wenn Sie es wirklich in ng-repeat
einfügen müssen, versuchen Sie ng-if
, um sicherzustellen, dass nur 1 ui-view
angezeigt wird. (this is a workaround and not recommended)
und modifiziere deine MainCtrl
ein bisschen, um $state
zu injizieren, damit wir Zugriff darauf in der Ansicht haben:
Leider macht das, was du versuchst, keinen Sinn. Was du damit sagst, ist: Wiederhole die Ansicht dieses Bundesstaates (Alben) so oft, wie viele Gegenstände es in den Sammelalben gibt. " Aber wenn du dann auf den Anker klickst, sagst du dem album.tracks state , um das Album mit der ID des Albums zu erhalten, auf das du geklickt hast. Dadurch wird der album.tracks-Status in jeder ui-view in der Albumansicht angezeigt (was Sie sehen).
Ein einzelner Status kann nicht mehrmals auf derselben Seite "instanziert" werden, wie Sie es hier versuchen. Siehe diese Frage für weitere Informationen: Does Angular JS unterstützt das Routing mehrerer Ansichten auf derselben Seite
Ich würde vorschlagen, dies auf eine andere Weise zu erstellen - vielleicht mit einer ng-Wiederholung mit ngInclude innerhalb, wenn Sie Ihre Vorlage getrennt halten müssen. Ansonsten ist es wahrscheinlich einfacher, das ganze Template auf einer Seite zu erstellen, ng-repeat für alle Alben und Tracks, dann alle auszublenden und jedes zu zeigen, wenn man mit ngHide / ngShow klickt.
Tags und Links javascript angularjs nested angular-ui-router angularjs-ng-repeat