5

これは単純なように思えますが、答えが見つかりません。

次のように設定されたデータの配列があるとしましょう。

friends = [{name:'John', age:60, location:'Brighton', street:'Middle Street'},
{name:'Bob', age:5, location:'Brighton', street:'High Street'}];

ここで、次のようなテキスト入力に基づいてデータをフィルタリングしたいと思います。

<input ng-model="searchText">
<ul>
    <li ng-repeat="friend in friends | orderBy:'name' | filter:searchText">
    {{friend.name}} - {{friend.location}}</li>
</ul>

これは正常に機能しますが、フレンド オブジェクトのすべての属性 (名前、年齢、場所、通り) に基づいて入力テキストをフィルター処理します。名前と場所のみに基づいてフィルタリングできるようにしたいと思います (年齢と通りは無視します)。これはカスタムフィルターなしで可能ですか?

4

4 に答える 4

7

はい、文字列の代わりに述語をフィルターに渡すだけで可能です。

<li ng-repeat="friend in friends | orderBy:'name' | filter:friendContainsSearchText">

$scope.friendContainsSearchText = function(friend) {
    return friend.name.indexOf($scope.searchText) >= 0 || friend.location.indexOf($scope.searchText) >= 0
}
于 2013-10-11T20:49:32.207 に答える
-1

...のように複数のフィルターを配置できます。

<div>
    <input ng-model="Ctrl.firstName" />
    <input ng-model="Ctrl.age" />

    <li ng-repeat = "employee in Ctrl.employees | filter:{name:Ctrl.firstName} | filter:{age:Ctrl.age}">{{employee.firstName}}</li>
</div>
于 2014-04-17T15:30:37.730 に答える