Wie kann ich Variablenänderungen übernehmen und problemlos an die ParentCtrl weitergeben, obwohl eine neue Variable in ChildCtrl instanziiert wird? Extra-Punkte für minimale bis keine $ auf der und $ Armbanduhr (macht es einfacher zu implementieren)Angular JS propagieren die Änderung der untergeordneten Bereichsvariablen in den übergeordneten Bereich
ParentCtrl
ChildCtrl/ChildCtrl2/ChildCtrl3/ChildCtrl4
- Ansicht
Meine ChildCtrls sind einfach anders genug, wo ich nicht einfach abstrahieren kann Aster Layout und eine ng-Ansicht, aber alle hängen von den gleichen Funktionen in ParentCtrl ab.
$ scope.searchTerms ist in ParentCtrl definiert, aber das Eingabefeld mit ng-model = 'searchTerms' befindet sich in der Ansicht der untergeordneten Controller. Wenn diese Variable geändert wird, werden in der ParentCtrl nicht nur die ChildCtrls angezeigt.
Beispiel: http://jsfiddle.net/JHwxP/22/
HTML Teil
<div ng-app>
<div ng-controller="Parent">
parentX = {{x}} <br/>
parentY = {{y}}<br/>
<div ng-controller="Child">
childX = {{x}}<br/>
childY = {{y}}<br/>
<a ng-click="modifyBothScopes()">modifyBothScopes</a><br>
<br>
The changes here need to appear in 'Parent'. <input ng-model='y'>
</div>
</div>
</div>
Controller
function Parent($scope) {
$scope.x= 5;
$scope.y= 5;
}
function Child($scope) {
$scope.modifyBothScopes= function() {
$scope.$parent.x++;
};
}
UPDATE
Ich bin derzeit ein Shared-Service-Ansatz versucht: https://gist.github.com/exclsr/3595424
UPDATE
Versuch, ein emit/Broadcast-System
Problem gelöst: Ich war $ scope.searchTerms in der Mutter Speicherung und wenn geändert, um einen Raum in dem Kind $ Bereich erstellt.
Lösung: Ich sollte $ scope.search.terms im Elternteil getan haben und wenn es im Kind geändert wurde, würde es zum Elternteil aufblasen.
Beispiel: http://jsfiddle.net/JHwxP/23/
Ich wusste von Miskos "Wenn du keinen Punkt benutzt, machst du etwas falsch." rede aber ich hatte noch nie erfahren warum. Hier ist ein funktionierendes Beispiel für Ihre Antwort: http://jsfiddle.net/JHwxP/23/ –
Ok, jetzt kann ich tote Leute sehen !!!!! Danke –