2013-09-24 3 views
5
.div(ng-repeat='item in items') 
    button(id='ID{{$index}}') No Hi 

button(id='anotherID1') Hi 

innen relevant Angular RichtlinieGeben eindeutige ID zu jedem Element in `ng-repeat` für DOM-Manipulationen

$('#ID1').on('click', function() {alert('hi');}); // does not work 

$('#anotherID1').on('click', function() {alert('hi');}); // works 

I DOM-Manipulationen am Durchführung, für die i eindeutige ID für ng-Wiederholungselemente benötigen. Bitte schlagen Sie auch vor, ob die DOM-Manipulation auch auf andere Weise durchgeführt werden kann.

Edit: @tymeJV: -

style. 
    .ques { 
    height: 50px; 
    overflow:hidden; 
    } 



<div ng-repeat='item in items'> 
    <div class='ques'> {{item.ques}} 
    </div> 
    <button id='ID{{$index}}'> No Hi </button> 
</div> 

// Richtlinie Code: - zu erhöhen Höhe von <div class = 'ques'>

+1

nur zu wissen: was ist dein tempmlate engine: jade? –

+0

ja, ich benutze jade –

+0

Was ist das endgültige HTML generiert. Wie sieht die ID-Eigenschaft darin aus? – Chandermani

Antwort

5

Vor allem, wenn Sie Angular verwenden, wird empfohlen, dass Sie mit Standard-Stick Angular-Direktiven für Listener, anstatt zu jQuery zurückzukehren. Verwenden Sie anstelle von jQuerys on das Attribut ng-click für HTML-Ereignisse, an die Angular einen Listener binden soll.

Zum Beispiel:

HTML:

<button ng-click="doStuff()"> 
</button> 

-Controller:

$scope.doStuff = function() { 
    //perform action 
}; 

Für eine eindeutige ID mit jedem Element von ng-repeat erstellt zu speichern, wie etwa das Hinzufügen eines Parameters zum doStuff Anruf mit der ID: ng-click="doStuff(item.ID)" und greifen Sie darauf in der $scope.doStuff Methode zu.

+0

Für die DOM-Manipulation werden Direktiven gegenüber Controllern empfohlen. $ scope.doStuff = function() { // Aktion ausführen }; ist Teil des Controller-Codes, während ich versuche, es durch Richtlinien zu erreichen. –

0

Versuchen Taste (id = {{ 'ID' + $ Index}})

+0

funktioniert nicht. –

-4

Für dynamisch zugewiesene ID. die Syntax von $('#ID1').on('click', function() {alert('hi');}); ändert ein wenig

$('#YourWrapperID').on('click','#id1' , function(){ 
    alert('hi'); 
}); 

perfekt funktioniert!

3

id = {{'flussdiagrammWindow' + $ index}} das funktioniert für mich