Damit zwei Controller in Angular miteinander kommunizieren können, wird empfohlen, einen gemeinsamen Dienst zu erstellen, der für beide Controller zugänglich ist. Ich habe versucht, dies in einem sehr einfachen fiddle zu veranschaulichen. Je nachdem, welche Schaltfläche Sie drücken, soll die App die Nachricht unter den Schaltflächen anpassen.Aktualisieren eines Controllers von einem anderen Controller in Angular
Warum funktioniert das nicht? Fehle ich etwas offensichtlich oder grundlegender?
HTML
<div ng-controller="ControllerOne">
<button ng-click="setNumber(1)">One</button>
<button ng-click="setNumber(2)">Two</button>
</div>
<div ng-controller="ControllerTwo">{{number}} was chosen!</div>
JavaScript
var app = angular.module('app', []);
app.factory("Service", function() {
var number = 1;
function getNumber() {
return number;
}
function setNumber(newNumber) {
number = newNumber;
}
return {
getNumber: getNumber,
setNumber: setNumber,
}
});
function ControllerOne($scope, Service) {
$scope.setNumber = Service.setNumber;
}
function ControllerTwo($scope, Service) {
$scope.number = Service.getNumber();
}
Meine Frage war eigentlich eine vereinfachte Version von meinem eigentlichen Code, der * viel * komplexe (zu viel SO schreiben auf). In meinem komplexen Setup hat Peters Vorschlag mein Problem nicht gelöst, obwohl es tatsächlich die beste Lösung für die spezifische Frage ist, die ich gestellt habe (+1). Das Hinzufügen einer Uhr war genau das, was ich brauchte, also wählte ich dies als die richtige Antwort (in meinem Fall). Danke allen! –