5

Mam element listy, który przełącza modalne i wyznacza param korzystając ng kliknij problem jest podczas wywoływania funkcji w jakimkolwiek innym miejscu, które rejestruje Course.SelectedCourse to undefined, chociaż Course.ID ma wartość.angularjs NG-Click z danych-przełącznik

<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

Odbywa się to również po wybraniu jednej pozycji z listy lub tylko za pierwszym razem, gdy jeszcze nie klikniesz przycisku? –

+0

Kliknięcie tego przycisku otwiera modalny przycisk, który wywołuje funkcję "dummyfun (Course.SelectedCourse)", w której loguję (Course.SelectedCourse). – JenuRudan

Odpowiedz

4

Użyj funkcji w sterowniku, może to wyglądać tak:

W widoku:

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

w kontrolerze

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

To działa dla mnie. Czy ktoś ma wytłumaczenie tego zachowania? Jaka jest różnica ? Dlaczego to nie działa: 'ng-click =" Course.SelectedCourse = Course.ID "'? – MobileDream

0

W angularjs, dyrektywy mają własny zakres, twoja lista jest generowana z powtórzeniem ng, prawda? Dlatego

"Course.SelectedCourse = Course.ID" 

nie działa, ponieważ wewnątrz div NG-powtórzeniu pętli $ scope.Course tworzony jest lokalnie i nie jest tym samym, że jeden w głównej kontrolera. Poza tym funkcje z głównego kontrolera można nazwać dyrektywami, dlatego poprzednia odpowiedź działa.