1. ホーム
  2. javascript

[解決済み] Angularで、配列内のオブジェクトを検索したい。

2022-05-16 23:49:34

質問

Angularで、私はたくさんのオブジェクトを返すオブジェクトをスコープに持っています。それぞれはIDを持っています(これはフラットファイルに格納されているので、DBはありません。 ng-resource )

私のコントローラでは

$scope.fish = [
    {category:'freshwater', id:'1', name: 'trout', more:'false'},
    {category:'freshwater', id:'2', name:'bass', more:'false'}
];

私のビューでは、魚に関する追加情報をデフォルトで非表示にしています。 ng-show more で隠していますが、単純な show more タブをクリックしたときに showdetails(fish.fish_id) . 私の関数は次のようなものです。

$scope.showdetails = function(fish_id) {  
    var fish = $scope.fish.get({id: fish_id});
    fish.more = true;
}

これで、ビューに詳細が表示されるようになりました。しかし、ドキュメントを検索した結果、その fish の配列を検索する方法がわかりません。

では、どのように配列に問い合わせるのでしょうか?また、コンソールでデバッガを呼び出して $scope オブジェクトで遊べるようにするには?

どのように解決するのですか?

少しはお役に立てたでしょうか。

以下は、私があなたのためにシミュレーションしてみたものです。

jsFiddleをチェックアウトしてください ;)

http://jsfiddle.net/migontech/gbW8Z/5/

ng-repeat」でも使えるフィルタを作成しました。

app.filter('getById', function() {
  return function(input, id) {
    var i=0, len=input.length;
    for (; i<len; i++) {
      if (+input[i].id == +id) {
        return input[i];
      }
    }
    return null;
  }
});

コントローラでの使用法。

app.controller('SomeController', ['$scope', '$filter', function($scope, $filter) {
     $scope.fish = [{category:'freshwater', id:'1', name: 'trout', more:'false'},  {category:'freshwater', id:'2', name:'bass', more:'false'}]

     $scope.showdetails = function(fish_id){
         var found = $filter('getById')($scope.fish, fish_id);
         console.log(found);
         $scope.selected = JSON.stringify(found);
     }
}]);

何か質問があれば言ってください。