Scope-Variable und ng-include in Angular harmonieren nicht

8

Ich habe eine Datei-Dropzone, um den Dateninhalt einer Datei zu erhalten.
Wenn ich $scope.importData auf null setze, ist es nicht mehr möglich, Daten innerhalb des Drop-Handlers zuzuordnen.

%Vor%

Ich habe herausgefunden, dass das Problem das ng-include sein könnte. Wenn ich es ohne das Include mache, wird es funktionieren.

Bitte versuchen Sie den Plunker ...

Ссылка

    
StinsonMaster 02.01.2014, 11:55
quelle

1 Antwort

8

ngInclude erstellt einen neuen Bereich, der prototypisch von seinem übergeordneten Bereich erbt, in Ihrem Fallbeispiel ist der übergeordnete Bereich der Bereich von pageCtrl . Das Problem mit Ihrem Beispiel ist, dass in $scope.addSetReImport Sie var $scope = this; setzen und in diesem Kontext this sich auf den Bereich von ngInclude und nicht auf den pageCtrl Bereich bezieht, also überschreibt $scope.importData = null; effektiv den Prototyp importData mit a Eigenschaft des ngInclude-Bereichs. Der folgende Screenshot der Chrome-Konsole veranschaulicht diese Überschreibung, die aus $ scope von ngInclude stammt:

Sie haben also zwei importData -Variablen, eine auf Ihrem ngInclude-Bereich und innerhalb Ihrer modalen Vorlage, die auf null zeigt, und eine zweite, die auf Ihrem pageCtrl -Bereich liegt, der während der handleDrop -Funktion. Da handleDrop den importData im Bereich pageCtrl aktualisiert, spiegelt es nicht die Eigenschaft wider, die im ngInclude-Bereich festgelegt ist, den Ihre Vorlage verwendet.

Damit Ihr Beispiel funktioniert, entfernen Sie einfach var $scope = this; aus der Funktion addSetReImport , um sicherzustellen, dass Sie auf den Bereich von pageCtrl verweisen. Hier ist ein geklonter Plocker mit einem funktionierenden Beispiel: Ссылка

    
Beyers 08.01.2014, 09:25
quelle

Tags und Links