Casablanca: AngularJs

Hi,

ich beschäftige mich gerade mit AngularJs. Einiges, was bereits via jQuery realisiert sind, müssen nun umgeschreiebn werden. Ich habe da folgendes Problem:

<img id="redLED" src="/images/redImage.gif" alt="" />
$("#redLED").attr("src", "/images/blueImage.gif");

Wie oben zu sehen ist, wird das "redImage.gif" bereits beim Laden der Seite angezeit und wird dann via jQuery durch "blueImage.gif" ersetzt.

Den Code oben habe ich (vereinfacht dargestellt) so umgeschrieben:

<img ng-src="{{myData.redImage}}" alt="" />
$scope.myData.redImage = "/images/blueImage.gif";

Das Problem, das ich nun bei AngularJs habe ist, dass beim Laden der Siete für kurze Zeit die Stelle, wo die Bilder Angezeigt werden müssen, leer steht und dann nach einer Weile, jenachdem wie die Internetgeschwindigkeit ist, werden alle Bilder geladen und auf einmal angezeigt.

Meine Frage ist nun, ob man den "ng-src" irgendwie direkt auf der HTML-Seite (<img ng-src="{{myData.redImage}}" alt="" />) vorbelegen kann? Ich habe versucht, dies im Angular-Bereich ganz oben vorzubelegen, das Ergebnis war aber nicht zufriedenstellend.

Danke im Voraus

  1. Tach!

    Das Problem, das ich nun bei AngularJs habe ist, dass beim Laden der Siete für kurze Zeit die Stelle, wo die Bilder Angezeigt werden müssen, leer steht und dann nach einer Weile, jenachdem wie die Internetgeschwindigkeit ist, werden alle Bilder geladen und auf einmal angezeigt.

    Das Problem wirst du in ähnlich auch noch mit den Platzhaltern sehen. Die Lösung dazu ist ngCloak.

    Meine Frage ist nun, ob man den "ng-src" irgendwie direkt auf der HTML-Seite (<img ng-src="{{myData.redImage}}" alt="" />) vorbelegen kann?

    Wenn das Cloak nicht so tut, wie du das möchstest, dann probier mal src zusätzlich zu ngSrc mit dem Default-Wert zu belegen.

    dedlfix.

    1. Hi,

      danke. Das hat ein biliges src="bild.jpg" gebracht. Ich hätte da noch eine frage. Ich habe mehrere AngularJs-Controller. In jedem Controller läuft ein $Interval. Gibt es eine Möglichkeit, von einem Controller alle Intervals die bereits in anderen Controller gestartet sind und bereits laufn zu stoppen(canceln)?

      Gruß

      1. Tach!

        Ich habe mehrere AngularJs-Controller. In jedem Controller läuft ein $Interval. Gibt es eine Möglichkeit, von einem Controller alle Intervals die bereits in anderen Controller gestartet sind und bereits laufn zu stoppen(canceln)?

        Möglich ist das vielleicht, wenn man sich irgendwie in den Eingeweiden von Angular die Referenzen auf die Controller zusammenklaubt. Der Angular-Weg wäre aber eher, die Timer in einen Service zu verlagern. Der auszuführende Code kann ja als Callback in den Controllern verbleiben. Der Service übernimmt jedenfalls die Verwaltung der Timer.

        dedlfix.