2013-04-30 10 views
10

Mam kontroler takiego:ng-click nie pracuje nad dynamicznym DOM AngularJS?

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

Kiedy próbuję wywołać funkcję upload_variant_image użyciu ng-click, to działa tylko podczas wiązania statycznego DOM (po załadowaniu DOM), mam łącze takiego :

<%= link_to "test", "" , "ng-click" => "upload_variant_image()" %> 

ale ten element jest dynamicznie dodawany po wczytaniu modelu DOM, więc ng-click nie działa.

Aktualizacja Wystarczy znaleźć część mojej odpowiedzi przy użyciu funkcji $ kompilacji: AngularJS + JQuery : How to get dynamic content working in angularjs

ale to nie działa, gdy zaktualizować DOM takiego w poręcze:

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

czy mógłbyś podzielić się demo lub demo plunkera? –

Odpowiedz

15

bym ostrzegam Cię, że nie możesz w pełni zaakceptować filozofii Angular, jeśli manipulujesz DOMem za pomocą zewnętrznych środków Angula. Dynamiczne dodawanie linków za pomocą AngularJS jest tak proste, jak wszystko inne i prawdopodobnie będzie o wiele łatwiejsze i bardziej idiomatyczne niż sprawienie, by twoja biblioteka zewnętrzna ładnie grała. Oto prosty przykład oparty na zapytanie: „prostu pracować”

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

Wszystko, co musisz zrobić, to drut się odpowiednio zakres danych i będzie zawsze

To powiedziawszy, jeśli manipulujesz DOM, możesz spowodować pojawienie się wiązań AngularJS (na przykład, ng-kliknięcie, jak chcesz) za pomocą $compile service. Zastanów się jednak nad powyższą lepszą opcją. :)

Powiązane problemy