2016-03-22 6 views
1
data = {key:0, Name:"Arun", key:1, Name:"Ajay", key:3, Name:"Ashok"} 

function dynamicfilter(data, fieldName, filtervalue){ 
    $filter('filter')(data, { fieldName: filtervalue }); 
} 

AngularJSで動的フィルタを実行する方法。私はこれがうまくいかないようにしてみました。AngularJSで動的フィルタを作成する方法は?

しかし、私は

function dynamicfilter(data, filtervalue){ 
     $filter('filter')(data, { Key: filtervalue }); 
    } 

のような静的フィールド名を与えるとそれは働いています。 AngularJSのコントローラー内にダイナミックフィールドフィルターを設定する方法が分かりますか? obj[propertyName] = valueのような角括弧でプロパティアクセサを使用してみてください、あなたの動的なプロパティ名を使用するように

+0

Typo there: 'dynamicfilter()'の 'Key'は' key'でなければなりません。 – Tushar

+0

Sureshが求めているのは、そのプロパティのオブジェクトの配列を動的にフィルタリングするために、プロパティ名を渡す方法です。 '{[fieldName]:filtervalue} 'の内部にある – Lex

答えて

3

function dynamicfilter(data, fieldName, filtervalue){ 
    var filter = {}; 
    filter[fieldName] = filtervalue; 
    $filter('filter')(data, filter); 
} 

ES2015のよう、あなたもcomputed property namesを使用することができます。これはしかし、すべてのブラウザで動作しないことがあります。

$filter('filter')(data, { [fieldName]: filtervalue }); 
+0

は' [fieldName] 'のような動的キーを使用できますか?私はそれについて疑問に思う –

+0

@PankajParkarこれはES2015の新機能「Computed Property Names」です。mdnへのリンクも参考に追加しました。こちらをご覧ください:https://developer.mozilla.org/en-US/docs/Web/JavaScript /リファレンス/演算子/ Object_initializer –

+0

OMG !! thats nice ..私はC#の方法で考えていた:(+1 –

0

あなたがこれを行うようになる別の構文を使用:

var filterData = {}, key = 'myField', value = 'myValue'; 
filterData[key] = value; 

結果:{ myField: 'myValue' }

0

あなたはこの

<input type="text" [(ngModel)]="search1" value="" class = "form-control" id = "search" /> 
 

 
<ng-container *ngFor="let app1 of apps"> 
 
     <tr *ngIf="!search1 || app1.name.includes(search1)"> 
 
     <td>{{app1.name}}<td> 
 
      <td>{{app1.login}}<td> 
 
     </tr> 
 
    </ng-container>
のように気にいらを使用することができます

関連する問題