2015-09-12 8 views
6

Soruyu göndermeden önce, yalnızca aradığımı ve çözümü bulamadığımı bildirmek istiyorum. Bu konu beni şaşırtıyor.Köşeli anımsama veren Sözdizimi Hatası: Token '{' ifadesinin sütun 22'sinde geçersiz anahtar

Aşağıdaki kodlarım var. İlk ng-tıklama doğru bir şekilde işleve ID'yi ekler, ancak açısal hata oluşturur (konuyla ilgili olarak belirtilir). İkinci ng-tıklatma ne hata üretir ne de ID'yi ekler, bunun yerine literal'i verir.

Tüm forumlarda aradım ve en çok 2. ng tıklama gibi kullanmak için kullandım ama benim için çalışmıyor. Yardım gerekli!

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

CEVAP:

Bazı testler yaptım ve FF veya Chrome geliştirici araç çubuğunun HTML denetçisi maçında şu kod verecek göreceğiz çünkü acemi için kafa karıştırıcı öğrendim

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

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

ancak w

gerçek işlev tetiklerse doğru değeri geçecektir. Örneğin aşağıdaki işlev, 1,2,3 vb. Gösterir ve gösterir.

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

Umarım açıklar ve yardımcı olur.

+0

Hayatımın 1 saatini bunun üzerinde geçirdim. Sayfada, geliştirici araçlarında hata ayıklama yerine daha önce yer almalıydı! –

cevap

7

Ben çünkü FF veya Chrome geliştirici araç çubuğunun HTML denetçisindeki acemi için kafa karıştırıcı dışarı bazı testler yaptı ve buldum

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

{{ & }}

+0

Haklısınız. Bu ne vm.deleteRegistration için yapıyorum. HTML'de (firebug veya krom araç çubuğunda görüyorsanız) vm.deleteRegistration (1) yerine vm.deleteRegistration (registration.id) oluşturduğunu fark ettim. Bu, açısal bir uzman olmayan birinin onu yanlış bir şey olduğunu düşünmesi için çok kafa karıştırıcıdır. Gerçekte fonksiyonun kendisinde iken doğru değeri geçecektir. – programmerboy

0

olmadan kullanmak durumunda, söz konusu kod olacak göreceksiniz

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

yerine

işlemek

ancak gerçek işlev tetiklendiğinde, doğru değeri iletecektir. Örneğin aşağıdaki işlev, 1,2,3 vb. Gösterir ve gösterir.

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

Umarım açıklar ve yardımcı olur.

0

Ben kodu kullanıyordum:

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

Ama tarayıcı "Token '{' invalid key at column 19 of the expression...." hata günlüğü tuttu.

Ders tanımı şöyledir:

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

Sonra angualrjs bir değişken adı değil, normal bir dize olarak course.id sürebilir düşündüm. Bu yüzden kodumu değiştirdim:

Ve bu başarılı oldu.

İlgili konular