Ich habe einige Winkel-Controller für Get/Post-Anfragen ein paar Mal und damit nicht zu eckig (oder JS in irgendeiner Weise, ich bin der Backend-Typ nicht Frontend), aber bekam ein Problem, das ich letzte Woche für ein privates Projekt zu lösen versuchte, ohne Erfolg. Ich habe jede Lösung ausprobiert, die ich hier finden konnte. Hoffentlich kann jemand helfen.Angular-Liste nicht auf Uhr aktualisieren
Ich bekomme 1x JSON-Objekt aus dem Backend mit 4x Strings und eine Liste von Strings.
{
'var1':'abc',
'var2':'def',
'var3':'ghi',
'var4':'jkl',
'images':['images/abcd.jpg', 'images/efgh.jpg']
}
Die GUI aktualisiert alle 4 Zeichenfolgen, aber nicht die Liste.
Controller:
app.controller('ObjectInfoController', function ($scope, $window, $http) {
$scope.$watch('images', function(newValue, oldValue) {
alert(newValue);
});
$http.post("http://localhost:8080/view_object/", postdata).then(
function(data, status, headers, config) {
$scope.var1 = data.data.var1;
$scope.var2 = data.data.var2;
$scope.var3 = data.data.var3;
$scope.var4 = data.data.var4;
$scope.images = data.data.images;
$scope.$digest();
},
function(err) {
// Do something
}
);
});
HTML:
<div class="row" ng-controller="ObjectInfoController">
<div class="col-md-3">
<!-- Images -->
<div class="owl-carousel content-slider-with-controls-autoplay">
<div class="overlay-container overlay-visible" ng-repeat="image in images">
<img src="{{image}}" alt="">
<div class="overlay-bottom hidden-xs">
</div>
<a href="{{image}}" class="popup-img overlay-link"><i class="icon-plus-1"></i></a>
</div>
</div>
<!-- Images end -->
</div>
<div class="col-md-8 pv-30 TextBlock bottomFix">
<h2 class="TextBlockTitle">{{var1}}</h2>
<ul class="nav">
<li class="icon-right-open-outline"><strong>{{var2}}</strong></li>
<li class="icon-right-open-outline"><strong>{{var3}}</strong></li>
<li class="icon-right-open-outline"><strong>{{var4}}</strong></li>
</ul>
</div>
</div>
ich Menschen sah Uhren mit diesem Problem zu beheben (obwohl ich nicht, warum die Liste braucht es aber keine Daten verbleiben), kann aber nicht Mach es zur Arbeit.
Siehe die Warnung() Ich mache es in der Uhr? Mit dieser Warnung bekomme ich die Bilder in meiner ng-Wiederholung und alles sieht gut aus. Entfernen der Warnung, und es funktioniert nicht. Führt eine Warnung eine Art "Aktualisierung" für die Ansicht durch, und kann ich sie ohne Warnung erzwingen?
Ich bekomme tatsächlich 2 Alarme auftauchen, zuerst ist leer und zweite druckt meine Liste, aber das ist normal ich herausgefunden habe. Ich habe versucht, auch $ scope.images in die Uhr zu setzen, ohne Glück.
Ich fühle, dass es entweder etwas Triviales gibt, das ich nicht verstanden habe, oder ich sollte keine Uhr benutzen, aber etwas anderes? Bitte erleuchte mich, wenn du weißt, was ich falsch mache. Ich fühle mich jetzt ahnungslos.
Und danke für Ihre Zeit.
Edit: habe gerade einen zufälligen Test und getippt {{images [0]}} nach {{var1}} und der korrekte Wert wurde auf der Seite geschrieben .... so scheint das Problem nur in meinem existieren ng-Wiederholung.
Vielen Dank. Ersetzt durch ng-src und entfernten Digest. Thought Digest wurde benötigt, um die Uhr zu "triggern", wie ich sie in anderen Uhr-Beispielen gesehen habe. Es hat jedoch nicht funktioniert, $ scope.images wie in Ihrem Beispiel zuzuweisen. Das war mein ursprünglicher Code, der nicht funktionierte und mich dazu brachte, eine Lösung zu finden. Ich habe es noch einmal versucht, um sicherzugehen, aber es hat nicht funktioniert. Immer noch nur beim Ansehen und Warnen :( – Kleggas
Es scheint auch kein Problem zu sein, die Liste außerhalb der ng-Wiederholung zu lesen. Habe gerade den Beitrag aktualisiert. – Kleggas
Hast du ng-src probiert? Oder werden die divs nicht erstellt ? – evsheino