16

私のコントローラーでは、次を呼び出すことができます:

$scope.games[0];

ゲーム配列の最初のアイテムにアクセスするには。フィルターを念頭に置いてこれを行う方法はありますか。

たとえば、私は持っています:

filter:search

繰り返しますが、どうすれば $scope.list[0]; を呼び出すことができますか? 最初の検索結果と同じにするには?

これは答えられました、ありがとう。AngluarJs を使用して Lagged.com 用のクールなウィジェットを作成しました。ここで無料のオンライン ゲームをプレイしてください: https://lagged.com/

4

3 に答える 3

10

これは、フィルターの依存関係をコントローラーに注入し、次のようなコードで呼び出すことで実行できます。

var filteredArray = filterDependency(arrayToFilter,args);

これは、フィルター処理された新しい配列を返します。「フィルター」フィルター (フィルターという名前のフィルター) を使用しているため、依存性注入はfilterFilter. コントローラーは次のようになります。

var app = angular.module('myapp',[]);
app.controller('ctrlParent',function($scope,filterFilter){
    var filteredArray = [];
    $scope.list = ["abc","def","ghi","abcdefghi"];
    $scope.$watch('search',function(newValue){
       filteredArray = filterFilter($scope.list, newValue);
       // do something with the first result
       console.log(filteredArray[0]); // first result
    });    
});

入力モデル ( ) にウォッチを設定してsearch、入力が変更されるたびに新しい値を取得し、配列を再フィルター処理できるようにします。


また

ng-repeatビュー内からインデックスにアクセスする必要がある場合は、次$indexng-repeatような特別なプロパティを使用できます。

<div ng-repeat="item in list | filter:search">
    {{$index}}
</div>

この Angular doc に示されているように、、、およびを$first使用$middleすることもできます。$last

デモここにフィドルがあります

于 2013-05-31T23:15:07.633 に答える
3

ブラケット アクセスではありません。ng-repeatフィルタ付きの場合:

ng-repeat="thing in things | filter:search"

ここでフィルタリングされたリストは匿名のようなもので、アクセスできる名前はありません。

そうは言っても、ngRepeat のドキュメントを見ると、各リピーターのスコープ内で、、、、およびにアクセスできること$index$firstわかり$middleます$last

だから何か

<body ng-app="App" ng-controller="Main">
    <pre ng-repeat="n in nums | filter:isOdd">
        n={{n}}:index={{$index}}:first={{$first}}:middle{{$middle}}:last={{$last}}
    </pre>
</body>

次の結果が得られます。

    n=1:index=0:first=true:middlefalse:last=false

    n=3:index=1:first=false:middletrue:last=false

    n=5:index=2:first=false:middlefalse:last=true

フィドル

于 2013-05-31T23:39:12.380 に答える
0

「ng-repeat」を使用していますか?その場合は、プロパティ $first、$index、$middle、および $last を見てください。これにより、リピートから特定のアイテムに関する情報を取得できます。

詳細については、こちらを確認してください: http://docs.angularjs.org/api/ng.directive:ngRepeat

于 2013-05-31T23:35:54.420 に答える