dedlfix: AngularJs feuert nicht

Beitrag lesen

Tach!

Ich habe gedacht, ich habe bereits alles darüber, wo alles steht, angegeben.

Mir war das jedenfalls bisher nicht klar, weil deine Ausführungen mir zu viel Interpretationsspielraum gelassen haben. Jetzt hast du alles konkret benannt und damit kann ich was anfangen.

Du lädst also außerhalb der Angular-Welt mit dem von ASP.NET MVC bereitgestellten Ajax-Mechanismus ein Stück HTML nach. Und nun kommt kein Angular vorbei, um selbiges zu parsen und den Controller darin zu erkennen.

Es sieht zwar für den Anfang so aus, als ob Angular (selbst)ständig alles auf Veränderungen überprüft und dann tätig wird. Das ist aber keineswegs der Fall. Wenn sich nichts tut, macht auch Angular nichts. Erst wenn ein Ereignis auftritt, von dem Angular Wind bekommt - und das war der entscheidende Nebensatz - läuft der Digest-Zyklus los. Inwiefern es allerdings hinzugefügtes HTML feststellen kann, weiß ich nicht. Ich bin da eher skeptisch. Meines Erachtens wird das HTML nicht ständig geparst, nur einmal am Anfang und dann merkt sich Angular, wo was zu tun ist.

Hmm, mal die Suche nach „angular add html ajax“ befragt, und da lautet die Antwort $compile. Damit kannst du deine ASP.NET-MVC-Ajax-Aufrufe (zumindest in der jetzigen Form) vergessen, weil die das HTML direkt einbinden und nicht als String zum Zwecke der Übergabe an $compile() liefern.

Mein Vorschlag ist, dass du statt die Partials nachzuladen, dir stattdessen eine Direktive gemäß dem Angular-Weg erstellst. Zur Not geht auch fest verdrahteter HTML-Code (mit Angularzeugs drin). Diese Teile lässt du mit ng-if oder ng-show/ng-hide nach Bedarf verschwinden und auftauchen. Die variablen Daten holt sich JSON-verpackt ein Angular-Ajax-Aufruf. Lass das ASP.NET-MVC-Ajax-Zeug raus, das spielt nicht mit dem Angular zusammen.

dedlfix.