Ich versuche, Bilder zu einem Array hinzuzufügen und sie auf dem Bildschirm anzuzeigen. Ich möchte die Bilder erst anzeigen, nachdem der Browser sie geladen hat. Ich habe einen .onload-Rückruf für das Bildobjekt angegeben und füge das Bild dem Array innerhalb dieses Callbacks hinzu. Die Benutzeroberfläche wird nur aktualisiert, wenn ein Klickereignis oder ein anderes "Ereignis ändern" eintritt. Ich habe nach Observablen geschaut, aber ich habe das Gefühl, dass das ein bisschen übertrieben für so etwas ist. Ich glaube an eckige 1 gab es eine Art von $ Uhr, die zu Klasseneigenschaften getan werden könnte. Das scheint trivial zu sein ... das Objekt wird aktualisiert, die Benutzeroberfläche sollte es widerspiegeln. Jede Hilfe wird geschätzt. Danke :)Angular 2 UI wird nicht aktualisiert, wenn Objekte zum Array hinzugefügt werden image.onload()
Hier ist eine plunker demonstrieren, was ich versuche zu tun. Ich füge X-Kätzchen im Konstruktor hinzu. Wenn dieser Code entfernt wird, die erste „Kätzchen hinzufügen“ drücken wird die Benutzeroberfläche aber nachfolgende Zugaben von Kätzchen nicht aktualisiert vorherige Kätzchen zeigen ...
private addItem(itemsArray) {
var randomnumber = Math.floor(Math.random() * (500 - 200 + 1)) + 200;
var imageObj = new Image();
imageObj.src = "http://placekitten.com/300/"+randomnumber;
imageObj.onload = function() {
itemsArray.push(imageObj);
}
}
Hier ist der gleiche Code, aber mit dem ersten Aufruf im Konstruktor auskommentiert. [Plocker] (http://embed.plnkr.co/shHj0Q7x5QmoyZCosDMx/). Ich drucke auch die 'src' und es scheint gut zu funktionieren. – Erevald
Ihr Plünderer funktioniert nicht in Safari 9.1.1. Welchen Browser benutzen Sie? Ich glaube, es ist ein Hit in Chrom. Der erste Klick bringt keine Kätzchen auf die Benutzeroberfläche und nachfolgende Klicks rendert die vorherigen Kätzchen. – crizzwald
Es funktioniert die ganze Zeit in Chrom für mich, einige Bilder sind sehr ähnlich, überprüfen Sie die URL für einen Hinweis. – Erevald