Übernehmen Sie den Bereich des äußeren Controllers von ng-include ohne einen Dienst?

8

In AngularJS ist es möglich, den Geltungsbereich des Eltern-Controllers von innerhalb eines eingeschlossenen Teils zu übernehmen, anstatt die Daten durch einen injizierten Dienst zu leiten?

Beispielfall:

Nehmen wir an, dass der Umfang von ParentCtrl wie folgt aussieht: { testData: 'testing stuff' }

%Vor%

Und innerhalb von partial.html :

%Vor%

Damit braucht der Partial nicht einmal einen eigenen Controller dafür. Wenn dies jedoch nicht möglich ist und Sie injizierte Daten nur zwischen Controllern über einen Service weitergeben können, warum hat Angular die Dinge so gemacht?

    
saricden 03.02.2015, 17:25
quelle

2 Antworten

5

Ja, so funktioniert es standardmäßig. ng-include erstellt immer einen neuen Bereich und:

  

Ein "untergeordneter Bereich" (prototypisch) erbt Eigenschaften von seinem übergeordneten Element   Umfang.

Siehe Dokumentation zu Scope.

Hier ist ein Beispiel für einen Plünderer.

Bearbeiten: Außerdem habe ich gerade ein Syntaxproblem in Ihrer ursprünglichen Frage bemerkt. Die Vorlage sollte in einfachen Anführungszeichen stehen. Ändern Sie <div ng-include="partial.html"></div> in <div ng-include="'partial.html'"></div>

    
Noel 03.02.2015, 17:57
quelle
0

Um mit dem Beispiel Plunkr in der ngInclude-Dokumentation herumzuspielen, kann ich darauf zugreifen der Umfang des übergeordneten Controllers aus dem partiellen. Ändern Sie beispielsweise den Inhalt von template1.html in:

%Vor%

Pro% docs erstellt ngInclude einen neuen Bereich, was bedeutet, dass Sie die beste Winkelübung "Einen Punkt in Ihrem Bereich verwenden" (Zugriff auf Objekte im Bereich statt primitiver Werte) beachten müssen, um dies zu vermeiden Probleme mit gebrochenen Referenzen. Sie können diese Stapelüberlauf-Frage für weitere Informationen lesen.

    
Problematic 03.02.2015 17:46
quelle