2017-04-10 8 views
0

2つのスコープがあります。私は範囲 "国"のid、国の名前に基づいて検索したいと思います。Angular JS:2スコープのフィルタ

この例では、「フランス」をどのように印刷することができますか。

$scope.country = [ 
{id:"1",name:"France"}, 
{id:"2",name:"Spain"} 

]; 

$scope.people = [ 
{name:"John",country:"1"}, 
{name:"Ben",country:"2"} 

] 

私が試した:

<tr ng-repeat="k in people"> 
<td>{{k.name}}</td> 
<td>{{country | filter : {"id" : k.country } }}</td> 

</tr> 

を私は私はそれが間違っているかいないドイトい場合は知らないが、私は唯一の配列ではなく、国のフィールド名を取得することができます。

答えて

1

を助けることができる

希望は、このようにフィルタを設定することができます。

<td>{{(country | filter : {"id" : k.country })[0].name }}</td> 

DEMO

+0

これは素晴らしいことです。ご協力いただきありがとうございます。 – user2410626

2

このようにしてください。私の意見で

var app = angular.module('anApp', []); 
 
app.controller('ctrl', function($scope) { 
 
    $scope.country = [{ 
 
     id: "1", 
 
     name: "France" 
 
    }, 
 
    { 
 
     id: "2", 
 
     name: "Spain" 
 
    } 
 

 
    ]; 
 

 
    $scope.people = [{ 
 
     name: "John", 
 
     country: "1" 
 
    }, 
 
    { 
 
     name: "Ben", 
 
     country: "2" 
 
    } 
 

 
    ] 
 

 
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.0/angular.min.js"></script> 
 

 
<div ng-app="anApp" ng-controller="ctrl"> 
 
    <div class="form-group"> 
 
    <table> 
 
     <tr ng-repeat="k in people"> 
 
     <td>{{k.name}}</td> 
 
     <td ng-repeat="c in country | filter:{id:k.country}">{{c.name}}</td> 
 

 
     </tr> 
 
    </table> 
 
    </div> 
 
</div>

+0

それがどこそこにケースを扱うので、これは芋答えの賢いです対応する国はありません –

+0

それは本当にスマートです。 – user2410626

+0

@CameronRodriguezフィルターが空の配列を返す場合、 '​​'が不足しているからです。 – charlietfl

0

、あなたは異なるスコープ間でデータを共有したり、アクセスしたい場合は、一般的に言って、あなたはrootScopeを使用する必要がありますが、私はあなたが必要な場合は、常にservicesを使用することをお勧めしますスコープ間でいくつかのデータを共有します。

私はAngularJSでこの要件を実装する方法ではなく、アプリケーション設計の問題だと思います。これはあなたに

関連する問題