2013-04-30 5 views
10

Ich habe einen Controller wie folgt aus:ng-click funktioniert nicht mit dynamischem DOM AngularJS?

@VariantModalCtrl = ($scope) -> 
    $scope.upload_variant_image = -> 
    alert("test") 

Wenn ich versuche, upload_variant_image Funktion ng Klick aufrufen, es funktioniert nur, wenn auf einen statischen DOM (wenn die DOM Lasten) zu binden, habe ich einen Link wie folgt :

aber dieses Element wird dynamisch hinzugefügt, nachdem das DOM geladen wurde, so dass ng-click nicht funktioniert.

aktualisieren gefunden Nur ein Teil meiner Antwort kompilieren mit $ Funktion: AngularJS + JQuery : How to get dynamic content working in angularjs

aber es funktioniert nicht, wenn ich das DOM wie dies in Rails aktualisieren:

$(".modal-body").html($compile("<%= j render("/variants/form", :variant => @variant) %>")(scope)); 
+0

könnten Sie bitte Geige Demo oder Plunker Demo teilen –

Antwort

15

würde ich warnen Sie, dass Sie die Angular-Philosophie möglicherweise nicht vollständig akzeptieren, wenn Sie das DOM durch angular-externe Mittel manipulieren. Das dynamische Hinzufügen von Links mit AngularJS ist so einfach wie alles andere und wird wahrscheinlich viel einfacher und idiomatischer sein, als Ihre externe Bibliothek zum Spielen zu bringen. Hier ist ein einfaches Beispiel basierend auf Ihre Frage: „einfach funktionieren“

<ul> 
    <li ng-repeat="item in items"> 
    <a ng-click="upload_variant_image()">{{item.name}}</a> 
    </li> 
</ul> 

Alles, was Sie tun müssen, ist Draht der Umfang Daten in geeigneter Weise und dies wird immer

Das heißt, wenn Sie das DOM manipulieren, können Sie AngularJS-Bindungen verursachen, um zu sagen, ng-klicken Sie, wie Sie wünschen) mit . Bedenken Sie jedoch die oben genannte bessere Option. :)

Verwandte Themen