1

Ich habe eine baumartige Tabelle mit zwei ng-Wiederholungen.ngClick mit Parameter übergibt nicht den Parameter

<table> 
<tr ng-repeat-start="am in anArray"> 
<td><button ng-click="TheFunction(am)"></button></td> 
</tr> 
<tr ng-repeat-start="em in anotherArray"> 
<td><button ng-click="TheFunction2(em)"></button></td> 
</tr> 
<tr ng-repeat-end></tr> 
<tr ng-repeat-end></tr> 

Mit etwas Funktion Ein-/Ausblenden die „richtige“ Linie das Ergebnis auf dem Bildschirm ist ein Baum, wobei jede Reihe einen Knopf aufweist, in den Rahmen definiert, um eine Funktion aufzurufen. In dem Regler I definiert die Funktion:

$scope.TheFunction=function(am){ 
alert(am); //and other things to do with the am object 
} 
$scope.TheFunction2=function(em){ 
alert(em); //and other things to do with the am object 
} 

Wenn ich die Seite ausführen, wird das Konstrukt treelike wie erwartet funktioniert, sind alle Tasten angezeigt. Wenn ich auf eine Schaltfläche klicke, wird die korrekte Funktion aufgerufen. Aber wenn ich den übergebenen Parameter überprüfe, ist er undefiniert.

Gibt es etwas, das ich vermisst habe?

+0

warum nicht ng-repeat verwenden und erhalten von den ng-repeat-End-Reihen wieder los? –

+0

Ich benutze die Start/Ende-Syntax, um es leichter zu lesen (zumindest für mich), sollte es nicht beeinflussen, die Parameter übergeben, denke ich? – Myko

+0

Problem mit [dieses DEMO auf JSFiddle] (https://jsfiddle.net/m3wtdsnL/) kann nicht reproduziert werden. – georgeawg

Antwort

1

Hier ist Ihr Code .. Es arbeitete mit ng-repeat und ng-repeat-start. Früher habe ich ng-repeat da es sauberer ist ..

sehen, ob dies für Sie arbeitet:

var app = angular.module('app', []); 
 
app.controller('main', main) 
 

 
function main($scope){ 
 
    $scope.anArray = ["a", "b", "c"]; 
 
    $scope.anotherArray = ["dog", "cat", "mouse"]; 
 
    $scope.TheFunction=function(am){ 
 
    alert(am); //and other things to do with the am object 
 
    } 
 
    $scope.TheFunction2=function(em){ 
 
    alert(em); //and other things to do with the am object 
 
    } 
 

 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div ng-app ng-view ng-controller="main"> 
 
<table> 
 
<tr ng-repeat="am in anArray"> 
 
    <td><button ng-click="TheFunction(am)">{{am}}</button></td> 
 
</tr> 
 
<tr ng-repeat="em in anotherArray"> 
 
    <td><button ng-click="TheFunction2(em)">{{em}}</button></td> 
 
</tr> 
 
</table> 
 
</div>

+0

Was genau haben Sie geändert, außer der App und der Controller-Definition, die ich nicht in meinen Code kopiert habe? – Myko

+0

verwendet 'ng-repeat' statt' ng-repeat-start' und 'ng-repeat-end' .. Sie können sehen, dass dieses einfache Beispiel im Snippet funktioniert. Wenn Sie es immer noch nicht zum Laufen bringen, bitte Stellen Sie auch den Teil Ihres Controllers, der die Arrays enthält. –

+0

Hmm, ich verstehe immer noch nicht, warum Ihr Code funktioniert und meins nicht. Gibt es einen bekannten Fehler bei der Verwendung der Start-End-Syntax? – Myko

Verwandte Themen