5

Ho un elemento della lista, che alterna modale e imposta un param utilizzando ng clic il problema è quando si chiama una funzione in qualsiasi altro luogo che registra Course.SelectedCourse è indefinito, anche se Course.ID ha un valore.AngularJS NG-click con i dati ginocchiera

<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

Questo avviene anche dopo aver selezionato un elemento dell'elenco o solo la prima volta quando non si fa ancora clic su un pulsante? –

+0

clicco quel pulsante che apre una modale che ha un pulsante che chiama una funzione "dummyfun (Course.SelectedCourse)" dove registro (Course.SelectedCourse) – JenuRudan

risposta

4

Utilizzare una funzione del controller, questo potrebbe essere simile a questo:

Nella vista:

<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> 

Nel controllore

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

Funziona per me. Qualcuno ha una spiegazione per questo comportamento? Qual è la differenza ? Perché non funziona: 'ng-click =" Course.SelectedCourse = Course.ID "'? – MobileDream

0

In AngularJS, le direttive hanno il loro scopo, la tua lista è generata con ng-repeat, non è vero? Ecco perché

"Course.SelectedCourse = Course.ID" 

non funziona, perché all'interno del div ng-repeat è un loop $ scope.Course è creato a livello locale e non è la stessa che quella del vostro controller principale. Inoltre, le funzioni del controller principale possono essere richiamate da direttive. Ecco perché la risposta precedente funziona.