Das Überschreiben der Layout-Ansicht in einem höheren Zustand von einem niedrigeren Zustand in ui-router führt zu einer leeren ui-view

8

Ich versuche, ein grundlegendes Layoutsystem zu erstellen, das geschachtelte Zustände in eckigen verwendet, die ui-Fräser verwenden.

Was ich möchte ist, dass jeder 'sub state' den 'layout' Teil des top level Status überschreiben kann, so dass verschiedene Site Layouts verwendet werden können, abhängig vom Bereich der Site.

Gegeben das folgende System / server / views / index.html:

%Vor%

und zwei Layouts, die in das oben Genannte getauscht werden sollen: system / public / ansichten / layouts / standard.html:

%Vor%

system / public / ansichten / layouts / full-width.html:

%Vor%

Beispiel Inhaltssystem / public / views / index.html

%Vor%

und schließlich der Router:

%Vor%

Das obige funktioniert. Ich kann die Kopfzeile in den Unterzuständen ein- und auslagern, aber wenn ich die Überschreibung für das 'Layout' hinzufüge:

%Vor%

Wenn ich die 'layout@' hinzufüge, wird die date-ui-view="layout" korrekt geladen, aber die untergeordneten Ansichten für die Kopfzeile und die unamed werden nicht ersetzt.

Irgendwelche Ideen, was hier vor sich geht?

Wenn das nicht funktioniert, was sind alternative Ansätze?

    
Trevor Jones 13.11.2014, 06:08
quelle

1 Antwort

15

Der Punkt ist, dass die Vorlage in einem untergeordneten Zustand 'root.home' folgendermaßen überschrieben wird:

%Vor%

Entfernt tatsächlich jeden Teil von der übergeordneten 'Wurzel'. Jetzt müssen wir dies für Geschwisteransichten verwenden:

%Vor%

Sehen Sie, dass wir root.home nach @ verwendet haben. Das heißt: Wir sagen ausdrücklich:

  • finde die ui-view="header" und die unbenannte ui-view="" innerhalb von this , aktueller 'root.home' state.

Es gibt kein Ziel im übergeordneten Zustand "home", da wir es vollständig übersprungen haben.

Das Beispiel in der Dokumentation ist in diesem Fall wirklich selbstbeschreibend:

Namen anzeigen - Relative vs. absolute Namen

(zitiertes selbstbeschreibendes Snippet)

%Vor%

Bitte beachten Sie auch diese wichtige Tatsache:

Bereichsvererbung nur nach Hierarchie anzeigen

  

Beachten Sie, dass Bereichseigenschaften die Zustandskette nur erben, wenn die Ansichten Ihrer Bundesstaaten verschachtelt sind. Die Vererbung von Bereichseigenschaften hat nichts mit der Verschachtelung Ihrer Zustände und allem zu tun, was mit der Verschachtelung Ihrer Ansichten (Vorlagen) zu tun hat.

     

Es ist durchaus möglich, dass Sie über geschachtelte Status verfügen, deren Vorlagen u-views an verschiedenen nicht verschachtelten Standorten Ihrer Site enthalten. In diesem Szenario können Sie nicht erwarten, auf die Bereichsvariablen der übergeordneten Statusansichten in den Ansichten der untergeordneten Status zuzugreifen.

i.e. - Wir können nicht vom übergeordneten 'root'-Status anyhting erben, da die Vererbung nur View-Views betrifft ...

    
Radim Köhler 13.11.2014 06:11
quelle