5

Ich habe ein Listenelement, das Modal schaltet und setzt einen Parameter mit ng-Klick Das Problem ist, wenn eine Funktion an einem anderen Ort ruft Course.SelectedCourse es ist undefiniert, obwohl Course.ID hat einen Wert.AngularJS NG-Klick mit Daten-Toggle

Nach Ansicht:

<li class="facebook" style="width:33%;"> 
    <a ng-click="Course.SelectedCourse = Course.ID" data-toggle="modal" data-target="#myModal"> 
     <span class="glyphicon glyphicon-user"></span> 
    </a> 
</li> 
+0

Dies findet auch statt, nachdem Sie ein Element der Liste ausgewählt haben, oder nur das erste Mal, wenn Sie noch nicht auf eine Schaltfläche klicken? –

+0

Ich klicke auf diesen Knopf, der ein Modal öffnet, das eine Schaltfläche hat, die eine Funktion "dummyfun (Course.SelectedCourse)" aufruft, wo ich logge (Course.SelectedCourse) – JenuRudan

Antwort

4

eine Funktion in der Steuerung verwenden, dies könnte wie folgt aussehen

<li class="facebook" style="width:33%;" > 
    <a ng-click="setSelectedCourse(Course.ID)" data-toggle="modal" data-target="#myModal"> 
    <span class="glyphicon glyphicon-user"></span> 
    </a> 
</li> 

In der Steuerung

function setSelectedCourse(course_id){ 
    $scope.Course.SelectedCourse = course_id; 
} 
+0

Es funktioniert für mich. Hat jemand eine Erklärung für dieses Verhalten? Was ist der Unterschied ? Warum funktioniert das nicht? 'Ng-click =" Course.SelectedCourse = Course.ID "'? – MobileDream

0

In AngularJS haben Richtlinien ihren eigenen Umfang, Ihre Liste wird mit ng-repeat generiert, oder? Deshalb

"Course.SelectedCourse = Course.ID" 

nicht funktioniert, weil innerhalb der div ng-repeat wird Looping $ scope.Course wird lokal erstellt und ist nicht das gleiche, dass das in Ihrem Haupt-Controller. Außerdem können Funktionen vom Hauptcontroller durch Anweisungen aufgerufen werden, deshalb funktioniert die vorherige Antwort.