2016-08-21 5 views
0

角度フィルタのロジックは何ですか?私たちは、プレーンJavaScriptでこのようなフィルタにEmber.jsまたは方法のいずれかのようなフィルタがあり、以下の方法Ember.jsでAngularフィルターをシミュレートする方法は?

var users = [ 
    { 
    name: "lokesh", 
    age: 25 
    }, 
{ 
    name: "john", 
    age: 20 
    } 
] 

<input type="text" ng-model="search"> 
<div ng-repeat="user in users | filter:search"> 
    {{user.name}} {{user.age}} 
</div> 

で角度フィルタを使用します。フィルタは、そのユーザ型の単語を持つオブジェクトを返さなければなりません。さらに、フィルタは独立したコンポーネントのようにすべきである。これは、オブジェクトのプロパティの任意の数の

var search = "lokesh"; 
users.filter(function (user) { 
    return user.name == search || user.age == search; 
}); 

2つのプロパティの名前と年齢のために上記のフィルタ作品で動作するはずです。任意の数のプロパティで動作するフィルタが必要です。フィルターをより詳細には、基本的にObject.keysを使用aswellは異なり==

+1

を私はあなたが、角度JSフィルターのためのソースコードを見てすることをお勧めしますし、適応するだろうそれはあなたの目的のためです。 –

答えて

0
let narrowedUserList = users.filter(function (user) { 
for(var key in user){ 
    if(user[key].toString().indexOf(filterValue) >= 0) 
     return true; 
    } 
    return false; 
}); 
2

をチェックする例を超える部分文字列と一致する必要があります:

users.filter(d => Object.keys(d).some(key => d[key] == search)) 

を今すぐそのember.jsヘルパー、または単にユーティリティ関数や計算されたプロパティー・テンプレートを作成するのは簡単。ライブアップデートを稼働させるのはちょっと難しいことですが、不可能なことはありません。

0

Angular Filtersは少し違います、登録は単純ですが、上記と同じロジックを使用して、後で簡単な検索機能を作成できます。カスタムフィルタを登録する

は、このように簡単です:

app.filter('search', function() { 
    return function(user, search) { 
    return user.name == search || user.age == search; 
    }; 
}); 

は角度フィルタのデモの作業:https://jsfiddle.net/suunyz3e/287/

+0

私はカスタムフィルターを求めませんでした。ロジック後ろのフィルタ –

+0

あなたのOPがはっきりしていないため、あなたのタイトルが「AngularJSフィルタのしくみ」だったので質問をマークしないでください。あなたのロジックを使ってangularjsフィルタのデモを行いました。 –

+0

編集しない限り、アップヴォートすることはできません。もう一度編集して保存してください –

関連する問題