2017-01-27 3 views
2

私はソーシャルメディアアプリケーションをコーディングしています。プロファイルページのプロファイルメニューに問題があります。私は特定の状況によっては目に見えるメニュー項目にしたい。このような配列にメニューアイテムを配置しました。どうすればこのフィルタをng-repeatで作ることができますか?

$scope.menuitems = [ 
    {id : "1", name : "Message", show : "other", url : ""}, 
    {id : "2", name : "Follow", show : "other", url : ""}, 
    {id : "3", name : "Followers", show : "all", url : ""}, 
    {id : "4", name : "About", show : "all", url : ""}, 
    {id : "5", name : "Statistics", show : "all", url : ""}, 
    {id : "6", name : "Edit", show : "own", url:""} 
]; 

私の目に見えるプロフィールは、ユーザー自身のプロフィールです。私は 'show'値 'own'で項目を印刷したいと思います。表示されているプロファイルが別のユーザーのプロファイルである場合、私は 'show'値 'other'で項目を印刷したい。そして、私はすべての発言で 'show'値 'all'で項目を印刷したいと思っています。私はこれについてインターネットに関する少しの研究をしましたが、私は正しい言葉を見つけられませんでした。 Angularjsでng-repeatでこれをどうやって作るのですか?

+0

を目に見えるプロファイルはユーザー自身のプロフィールである場合は、例えば、時間 – Sajeetharan

+0

でのみ1フィルタを行うことができますが、私は好きにしたいですこれはif(item.show!= 'other')です。しかし、私はng-repeat @ Sajeetharanで書く方法を見つけることができませんでした –

+0

どのスコープ変数であなたは見えるプロフィールを保持していますか? – tomepejo

答えて

2

ここ

$scope.conditionVar = 'own'; //this will change depending on what profile 

    angular.module('myFilters', []). 
    filter('profilefilter', function() { 
    return function(items, condition) { 
     var out = []; 
     for (var i in items) { 
     var item = items[i]; 
     if (item.show === 'all' || item.show === condition) { 
      out.push(item); 
     } 
     } 
     return out; 
    } 
    }); 
    <li ng-repeat="menuitem in menuitems | profilefilter:conditionVar">{{menuitem}}</li> 

が動作デモでカスタムフィルタを作成します - https://jsfiddle.net/0o7ewpgd/1/

+0

私は試しましたが、うまくいきませんでしたが、うまくいきませんでした。私はエラーは表示されませんでしたが、表示されていない要素 –

+0

変数名を変更してコードを書いただけです –

+0

このコードは論理的に実装する必要があります。 – 1Mayur

関連する問題