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' }
Und innerhalb von partial.html
:
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?
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.
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>
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:
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.
Tags und Links javascript angularjs angularjs-scope