2013-12-11 10 views
6

内の角度値を使用することはできません。は、なぜこれが動作しない引用符

<ul class="dropdown-menu"> 
    <li ng-repeat="choice in dropDownItems"> 
    <a class="btn" ng-click="mnuClick('{{choice}}')">{{choice}}</a> 
    </li> 
</ul> 

をしかし、これは動作します:トップの例で

<ul class="dropdown-menu"> 
    <li ng-repeat="choice in dropDownItems"> 
    <a class="btn" ng-click="mnuClick('xxx')">{{choice}}</a> 
    </li> 
</ul> 

mnuClick()ルーチンが呼び出されることは決してありませんが、中下の例はそうです。私が「検査要素」を実行すると、すべてがうまく見えます。

+0

内部表現あなたは二重の中括弧は必要ありません。 http://stackoverflow.com/questions/17878560/difference-between-double-and-single-curly-brace-in-angular-js SPECによる –

答えて

7

mnuClick機能に文字列{{choice}}を提供したいと言っているので、機能しません。

xxxを提供する場合、これは実際には正しいので、ここでは引用符が必要です。 {{choice}}を使用した場合

しかし、あなたは文字列を望んでいないが、あなたは式が評価されるように、パラメータとして(文字列おそらく)その結果はことをしたい - ので、あなたは(引用符は必要ありません。中括弧もそうではありません)。

だから

<a class="btn" ng-click="mnuClick(choice)">{{choice}}</a> 

を書いて、あなたは罰金:-)です。

簡潔にする:あるケースでは、文字列に解決される式を処理し、もう1つのケースでは文字列を直接処理します。したがって、あなたは一度引用符を必要とせず、もう片方は引用符を必要としません。

あなたがいないときは、中括弧を使用する際の詳細な情報を必要とする場合は、この質問にthis answerをチェックアウト:Difference between double and single curly brace in angular JS?

は、この情報がお役に立てば幸いです。

PS:あなたのaタグのテキストの中で、あなた必要ダブルカーリーブレース、あなたがここにAngularJS制御コード・ブロックの中じゃないと - ので、あなたが結合としてそれをマークする必要があり、それ以外の場合は」 dはHTMLの中のテキストです。

2

ng-clickの値は角度式として解釈されるため、「選択肢」の前後に中括弧を使用する必要はありません。

<a class="btn" ng-click="mnuClick(choice)">{{choice}}</a> 
0

これはできません。私は間違いなく時代のそれらの線たっぷりに沿って何かをやったが、確認するために手にコードを持っていない

ng-click="mnuClick(choice)" 

...

関連する問題