Ich habe die Variable $ scope.parents, die sich im Controller "userCrtl" befindet. Das Problem ist, dass der Wert nach dem AJAX-Aufruf nicht aktualisiert wird. Ich habe versucht, $ q zu verwenden, um die Änderungen nach dem Ende des Versprechens anzuwenden; Das ist mir jedoch nicht gelungen. Ich habe versucht $ scope.watch zu verwenden, um Änderungen zu erkennen, aber diese Methode wird nie gestartet. Daher wird meine HTML-Seite nie aktualisiert. Wenn ich console.log ($ scope.parents) verwende, wird der Wert von $ scope.parents normal angezeigt, aber die HTML-Ansicht wird nicht aktualisiert. Wenn $ scope.parents mit einem Standardwert ($ scope.parents = "test") initialisiert wird, wird dieser Wert angezeigt, aber nicht mehr geändert. Die frustrierendste Sache ist, dass ich dasselbe in anderen Anwendungssteuerungen mache und alles gut funktioniert. Etwas bewirkt, dass nur zuvor definierte Werte für $ scope-Variablen in html angezeigt werden. Im Folgenden ist der Controller-Code:
app.controller("userCtrl", function($scope, userService, $http) {
$scope.panels = userService.get();
$scope.parents = null;
$scope.start = function(panel) {
// Get parents blocks
$http.get(path + "getpaneluser /" + panel.painelUsername).then (function (response) {
$scope.parents = response.data;
// Here the value of parents is normally displayed
console.log($scope.parents);
}, function(error) {
});
};
// Displays only null, even if $scope.parents has a value after the AJAX call
$scope.$Watch('parents', function() {
console.log($scope.parents);
});
});
HTML-Code.
<div class="col-lg-12" style="padding-right: 0%;">
{{parents}} <!-- value never displayed -->
<div ng-repeat="item in parents" class="declareContainer">
{{item}}
</div>
</div>
Vielen Dank für Ihre Hilfe
Sie haben einen Tippfehler in Ihrem Code: $ Scope. $ Watch sollte $ Scope sein. $ Uhr, aber das ist nicht der Grund für y unser Problem –
Nur um alle Grundlagen abzudecken, können Sie bestätigen, dass die HTML-Vorlage, die Sie zur Verfügung gestellt haben, innerhalb der userCtrl und nicht unter dem Einfluss eines anderen Controllers ist? Das würde erklären, warum die Benutzeroberfläche weiterhin die alten Werte anzeigt und nicht die neuen Werte, die von userCtrl geladen werden, da die von der userCtrl gesetzten $ scope.parents in ihrem eigenen untergeordneten Bereich liegen und für Ihre HTML-Vorlage nicht verfügbar sind. – CodeWarrior
So Freund, in den app.js innerhalb der Routing definieren Sie folgendes: templateUrl: 'views/panelUser.html', Controller: 'userCtrl' Ich glaube, dass rechts –