2017-03-09 7 views
0

私はスコープ内に2つの配列を持っています:従業員と車。すべての従業員は、車列から車に合った車を持っています。配列のセレクタとしてのAngularJSフィルタ

今、私はNGリピートを持っているとフィルタとの直接出力車の色をしたいと思います

[{'id': 1, 'color': 'red'}] 

のような車

[{'id': 1, 'name': 'John', 'carId': 1}] 

のように従業員に見える:

{{ employee.carId | selectFromCars:$scope.cars }} 

フィルターの中の車の配列にアクセスする方法がわかりません。これは可能ですか?また、荷物を積んだ後に従業員に車を注入してから次のように使用する必要がありますか?

{{ employee.car.color }} 
+0

問題のJSFiddleリンクを提供できますか? – Yuvraj

+0

ここにありますhttps://jsfiddle.net/3tq83xkL/2/ – Matt

+1

JSFiddle [link](https://jsfiddle.net/3tq83xkL/4/)を更新しました。見てみましょう。私はfunctionと呼ばれるフィルタを使用せず、その応答を補間しました。 – Yuvraj

答えて

1

独自のカスタムフィルタを作成し、ちょうどそれをそうのようなあなたのコントローラの終わりを追加することができます。

.filter('empCarFilter', function() { 

    return function(carId, cars) { 

     // you can access $scope.cars here, for example... 

     angular.forEach(cars,function(value){ 
      if (value.id === carId) { 
       return value.color; 
      } 
      // etc...etc... 
     }) 

} 

上記の方法は、あなたがフィルターにemployee.carIdを渡しているという仮定の下にあります。しかし、わからないあなたにもしていないフィルターに、オブジェクト全体を渡すことができますどのように役立ち、これはあなたのためだろうが、とただ一つのキー:ここ

{{ employee | empCarFilter }} 

も、カスタムフィルタのためのかなり良いリファレンスです: https://scotch.io/tutorials/building-custom-angularjs-filters

+0

$ scopeにアクセスするにはどうすればよいですか?注射する可能性はない? – Matt

関連する問題