2015-09-12 9 views
6

Zanim opublikuję moje pytanie, chcę tylko poinformować, że przeszukałem wystarczająco i nie mogłem znaleźć rozwiązania. Ten problem mnie wprawia w zakłopotanie.Kątowe kliknięcie w ng-kliknięcie Błąd składni: Token "{" nieprawidłowy klucz w kolumnie 22 wyrażenia

Mam następujący kod. Pierwsze kliknięcie prawym przyciskiem wstawia identyfikator do funkcji, ale generuje błąd kątowy (wymieniony w temacie). Drugie kliknięcie nie generuje błędu ani nie wstawia identyfikatora, zamiast tego renderuje literał.

Przeszukałem wszystkie fora i większość z nich wspomniałem, że używam tego, jak moje drugie kliknięcie, ale to nie działa dla mnie. Wymagana pomoc!

<tr ng-repeat="registration in vm.filteredList"> 
    <td>{{registration.id}}</td> 
    <td>{{registration.dateModified | date}}</td> 
    <td> 
     <a class="btn btn-primary" ng-click="vm.editRegistration({{registration.id}})" href="#">E</a> 
     <a class="btn btn-danger" ng-click="vm.deleteRegistration(registration.id)" href="#">D</a> 
    </td> 
</tr> 

ODPOWIEDŹ:

Zrobiłem kilka testów i okazało się, że jest mylące dla początkujących, ponieważ w inspektora HTML pasku dewelopera FF lub Chrome, widać, że kod będzie świadczyć

<a class="btn btn-danger" ng-click="vm.deleteRegistration(registration.id)" href="#">D</a> 
<a class="btn btn-danger" ng-click="vm.deleteRegistration(registration.id)" href="#">D</a> 
<a class="btn btn-danger" ng-click="vm.deleteRegistration(registration.id)" href="#">D</a> 

zamiast

<a class="btn btn-danger" ng-click="vm.deleteRegistration(1)" href="#">D</a> 
<a class="btn btn-danger" ng-click="vm.deleteRegistration(2)" href="#">D</a> 
<a class="btn btn-danger" ng-click="vm.deleteRegistration(3)" href="#">D</a> 

ale w Kiedy rzeczywista funkcja odpali, przejdzie właściwą wartość. Na przykład poniżej funkcja otrzyma i wyświetli 1,2,3 itd.

vm.deleteRegistration = function (id) { alert("ID: " + id)}; 

Mam nadzieję, że wyjaśni i pomoże.

+0

Spędziłem 1 h mojego życia nad tym. Powinien pojawić się na stronie wcześniej, zamiast debugowania narzędzi programistycznych !!! –

Odpowiedz

7

Należy używać

ng-click="vm.editRegistration(registration.id)" 

bez {{ & }}

+0

masz rację. To co robię dla vm.deleteRegistration. Co właśnie sobie uświadomiłem, że w HTML (jeśli widzisz w firebug lub pasku narzędzi chrome) zobaczysz, że wyrenderuje vm.deleteRegistration (registration.id) zamiast vm.deleteRegistration (1). To bardzo dezorientujące dla kogoś, kto nie jest ekspertem kątowym, ponieważ sprawi, że pomyśli coś złego. W rzeczywistości w samej funkcji przejdzie właściwą wartość. – programmerboy

0

Zrobiłem kilka testów i okazało się, że jest mylące dla początkujących, ponieważ w inspektora HTML pasku dewelopera FF lub Chrome, widać, że kod będzie renderowanie:

<a class="btn btn-danger" ng-click="vm.deleteRegistration(registration.id)" href="#">D</a> 
<a class="btn btn-danger" ng-click="vm.deleteRegistration(registration.id)" href="#">D</a> 
<a class="btn btn-danger" ng-click="vm.deleteRegistration(registration.id)" href="#">D</a> 

zamiast

<a class="btn btn-danger" ng-click="vm.deleteRegistration(1)" href="#">D</a> 
<a class="btn btn-danger" ng-click="vm.deleteRegistration(2)" href="#">D</a> 
<a class="btn btn-danger" ng-click="vm.deleteRegistration(3)" href="#">D</a> 

ale po uruchomieniu faktycznej funkcji zostanie przekazana właściwa wartość. Na przykład poniżej funkcja otrzyma i wyświetli 1,2,3 itd.

vm.deleteRegistration = function (id) { alert("ID: " + id)}; 

Mam nadzieję, że wyjaśni i pomoże.

0

używałem kod:

<div ng-click="joinPublicCourse({{course.id}})"> 
</div> 

Ale przeglądarka przechowywane zalogowaniu błąd "Token '{' invalid key at column 19 of the expression....". Definicja

Kursu idzie tak:

course = { 
    id: '123', 
    ... 
} 

Wtedy zorientowaliśmy angualrjs mógł wziąć course.id jako nazwy zmiennej, a nie zwykłego łańcucha. Więc zmieniłem kod:

<div ng-click="joinPublicCourse('{{course.id}}')"> 
</div> 

I ten się powiódł.

Powiązane problemy