2016-10-14 7 views
0

現在のURLに基​​づいてオブジェクトの配列から値を繰り返そうとしています。私のURLがこの "localhost /#/ score/javelin"であるとき、私は自分の配列からjavelinのスコアだけを繰り返したいとしましょう。URLに基​​づいてng-repeatの値が異なる

私の配列は次のようになります。

$scope.ppl = 
      [ 
       { 
        firstname: 'Donald', 
        lastname: 'Trump', 
        from: 'USA', 
        run100m: ['1s','2s','3s'], 
        javelin: ['50m','20m','44m'] 
       }, 
       { 
        firstname: 'Foo', 
        lastname: 'Bar', 
        from: 'SWE', 
        run100m: ['1s','2s','3s'], 
        javelin: ['80m','10m','54m'] 
       }, 
      ]; 

15スポーツの種類や人々の未知の量の上に存在します。膨大な量の配列を作ることなくこれをどのように行うことができるのか分かりません。私はこれを行うためにあらゆる種類のことを試みてきましたが、何も働いていませんでした。このコードは次のように働くだけrun100mとさ

<tr ng-repeat="x in ppl"> 
     <td>{{x.firstname}}</td> 
     <td>{{x.lastname}}</td> 
     <td>{{x.from}}</td> 
     <td><span ng-repeat="y in x.run100m track by $index">{{ y }}</span> 
     </td> 
     <td><button>edit</button></td> 
    </tr> 

これは私の繰り返しのように見えるものです。もし私が/ javelinにURLを変えれば、私はスパンの内側に窓の刻みを入れたい。私はこの仕事をすることができます

唯一の方法は、私が

<span ng-show=" URL == javelin"></span> 

などを作成するが、それは非常にスマートな方法であれば、私はわからないということです。だから私の質問は、私がこの仕事を賢くする方法ですか? ppl構造はそうである必要はありませんが、私は1つの変数にすべての情報を格納することができれば素晴らしいでしょう。

ああ、私はコントローラの内部にURLを取得する方法を知っていると言って忘れてしまった。それはここで問題ではありません。

だから私は、この変数に基づいて繰り返すたい:

var path = $routeParams.sport; 
+0

そのすべてのレベルごとに一貫性のあるプロパティ名と値の種類を使用してについて。スポーツの名前は鍵であってはならない。スポーツのようなもっと一般的なものの価値でなければならない。 'javelin'' – charlietfl

答えて

2

は、式の中でプロパティアクセサを使用します。

<tr ng-repeat="x in ppl"> 
    <td>{{x.firstname}}</td> 
    <td>{{x.lastname}}</td> 
    <td>{{x.from}}</td> 
    <td><span ng-repeat="y in x[eventType] track by $index">{{ y }}</span> 
    </td> 
    <td><button>edit</button></td> 
</tr> 
+0

それは夢のように働いている。どうもありがとうございます! – Frostbch

関連する問題