2016-03-31 19 views
0

<tr>タグでng-repeatを使用して、<td>タグにmysqlからプルされたデータを入力してJsonに変換しています。これはうまく動作します。ただし、使用している<td>タグの1つにボタンが含まれています。Angular.js ng-repeat一意の識別子

私がしたいことは、これらのボタンのそれぞれをDOM内で何らかの形で識別させて、特定の要求をターゲットにすることです。

例:ページが読み込まれると、ng-repeatはボタンを4回繰り返します。これらのボタンのそれぞれには、ng-clickが付いています。私はそれぞれがjsonファイル内の異なる情報を開いてフィルタリングしたいと思っています。

ng-repeatが各ボタンの同じアイテムを単に開くと仮定して正しいのですが、それらを別々にする方法はありますか?ありがとう。

あなたがフロントエンドにこのような何かを行うことができます

答えて

0

<button ng-repeat="item in items track by $index" ng-click="someFunction($index)" >Something happens</button> 

次に、あなたのコントローラで:

$scope.someFunction = function (index) { 
    if (index === 1): 
     // etc. 
    else... 
     // Or use switch, whichever works for you. 
0

あなたは配列内の各アイテムに特定の機能を作成することができます。

<button ng-repeat="button in buttons" ng-click="button.functionName()">{{button.name}}</function> 
0

それには$インデックスがあります。それはあなたのng-repeatのいずれかのために取ることは非常に良い習慣です。また、DOMがロードされた後にボタンのUIが変更されない場合はbind-onceを忘れないでください。

<ul> 
    <li ng-repeat="page in pages"> 
     <a ng-class="{ testClass: $index == pageNumber }" ng-click="setPageNumber($index)">{{ page }} - index is : {{$index}}</a> 
    </li> 
</ul> 

http://jsfiddle.net/bonatoc/4z1t4gsm/3/

また、あなたは(バインドワンスを使用して)行うことができます:あなたのボタン与え

<button 
ng-repeat="button in ::buttons track by $index" 
id="button_{{$index}}" 
class="{{button['css_class']}}" 

は...だけでなくJSONオブジェクトであった(用心、NGリピートは配列が好き、オブジェクトではありません。オブジェクトの配列は問題ありません):

$scope.buttons = [ 
    0: { 
     'css_class': someClass, 
     'functionToTrigger': function(... 

// ... 
+0

ボタンはjsonオブジェクトではなく、同じですjsonデータとして。ボタンは空白のブートストラップボタンです。 –

+0

私はあなたを聞いています。私はただの可能性を指摘したかっただけです。 ng-repeatを実行すると、基本的にphpのmysql_fetch_arrayに相当する処理が行われます。したがって、DOM要素自体に念頭に置かれているほとんどの値(この場合は

+0

私は角度材料を調べることをお勧めします。角度材料は、ブートストラップよりも優れています。しかし、Bootstrapがあなたのものなら、あなたはUI-Bootstrap(角度jsポート)も持っています。 –