2015-09-12 10 views
6

質問を投稿する前に、十分に検索して解決策を見つけることができませんでした。この問題は私には難解です。構文エラーが発生しました:トークン '{'式の列22のキーが無効です

次のコードがあります。 First ng-clickは、関数内にIDを正しく挿入しますが、角度エラー(subjectに記述されています)を生成します。 2回目のクリックはエラーを生成したりIDを挿入したりせず、リテラルをレンダリングします。

私はすべてのフォーラムを検索し、2番目のng-clickのように使用することが最も言及されていますが、それは私のためには機能しません。ヘルプが必要です!

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

ANSWER:

私はいくつかのテストを行なったし、FFやChrome開発者ツールバーのHTMLインスペクタで、あなたはそのコードがレンダリングされますが表示されますので、それは初心者のために混乱されてい

<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> 
代わりに

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

が、ワットの

実際の関数が起動すると、正しい値が渡されます。たとえば、以下の関数は1,2,3などを受信して​​表示します。

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

うまくいけば説明してくれます。

+0

これ以上の人生の1時間を費やしました。開発者用ツールでデバッグする代わりにページに早く着陸したはずです。 –

答えて

7

、私はいくつかのテストを行なったし、FFやChrome開発者ツールバーのHTMLインスペクタで、あなたはそのコードが意志表示されますので、それは初心者のために混乱されてい{{ & }}

+0

あなたは正しいです。 vm.deleteRegistrationのために何をしているのですか? 私が気付いたのは、HTML(FirebugまたはChromeのツールバーに表示されている場合)では、vm.deleteRegistration(1)の代わりにvm.deleteRegistration(registration.id)がレンダリングされることがわかります。それは彼が間違って何かを考えるようになるので、角度の専門家ではない人にとっては非常に混乱しています。実際には関数自体で正しい値を渡します。 – programmerboy

0

なし

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

を使用すべき

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

代わりの

レンダリング
<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> 

実際の機能が起動すると、正しい値が渡されます。たとえば、以下の関数は1,2,3などを受信して​​表示します。

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

うまくいけば説明してくれます。

0

私は、コードを使用していた。

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

しかし、ブラウザが"Token '{' invalid key at column 19 of the expression...."エラーをログに記録保持しました。

コースの定義は次のようになります:

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

その後、私はangualrjsは、変数名ではなく、通常の文字列としてcourse.idを取ることができる考え出し。だからコードを変更しました:

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

これが成功しました。

関連する問題