2017-01-11 3 views
1

私は新しいAngular Applicationに取り組んでおり、私はドロップダウンナビゲーションを構築しています。私は現在、それほどのようなコントローラ内ナビゲーションアイテムの配列を返すためにファクトリーを使用しています:入れ子配列の要素を削除して元の構造を保持するにはどうすればよいですか?

var sections = this.NavMenusFactory.sections; 

メニューの構造がそうのようになります。

enter image description here

私はを循環する必要がありますユーザーがアクセスする権限を持たず、元の構造を保持しているアイテムを配列に追加して削除します。これは現在のユーザーと配列オブジェクト内のrequiredPermissionsインデックスによって決定されます。

私はlodashライブラリにアクセスしていますので、フィルタリングと削除の機能を試してみました。どのように私はそれが必要なのか正確には何も働いていない。

var sections = this.NavMenusFactory.sections; 
this.dropdownNavItems = []; 
forEach(sections, (section) => { 
     if (section.section === 'financials') { 
     this.dropdownNavItems = this.dropdownNavItems.concat(section.pages.filter(navitem => { 
      // console.log("section", navitem); 
      return !navitem.requiredPermissions || this.Permissions.parseAccessByValue(selectedVehicle, navitem.requiredPermissions); 
     })); 
     } 
    }); 

私は削除された項目と画像のように、元の構造を保持することはできませんよ。私はそれをやろうとしていますかの簡単な例を与えるために。私はJavascriptには非常に新しいので、いくつかの指針は非常に高く評価されます。

+0

ユーザーが許可していないアイテムを「削除」する代わりに、テンプレートに「hasPermission」チェックを付けて表示するだけで、権限が更新されると自動的に表示されます。私は何を求めているのか、特定のアイテムを「取り除く」ことによって何を達成したいのですか? – haxxxton

+0

あなたは基本的にあなたが権限を持っていないページを削除したいですか? –

+1

@haxxxtonその解決法は非常に簡単な選択肢のようです。その考え方を拡張するために、フィルタを角度フィルタにして、ng-repeat – Belfordz

答えて

0

あなたのコードは私には正しいように見えますが、あなたの問題は実際には角に関連する可能性が高いことを示唆しています。

ng-repeatを使用してすべての結果を繰り返しているとすると、問題の原因は「トラックバイ」の部分がng-repeatである可能性があります。 this part of the ng-repeat docsを参照してください。item.nameなどのトラックを使用してみてください。問題が解決するかどうか確認してください。

関連する問題