0

私は角度jにui router($ routeproviderと$ locationprovider)を使用しています。現在のurl/routeに応じてng-repeatでループする配列を変更したい。私はスタック上の類似の記事を読んだが、私の問題の正確な解決策を見つけることができない。条件付きng-repeat ui-router

URLの変更は、私はいくつかの種類で「Ctrl.data.limitedにあるもの」を「Ctrl.data.allにあるもの」からNGリピートを変更したいときに、これらは私のルート

.when('/limited', { 
      template: '<di-home></di-home>', 
      activeTab: 'home', 
      caseInsensitiveMatch: true, 
     }) 

    .when('/all', { 
      template: '<di-home></di-home>', 
      activeTab: 'home', 
      caseInsensitiveMatch: true, 
     }) 

ですif文の

<md-card class="md-whiteframe-4dp" ng-repeat="things in Ctrl.data.all" flex-xs="100" flex-sm="100" flex-md="45" flex-gt-md="30"></md-card> 

これを行うにはどのような方法が最適ですか?あなたは正しい方向/同様の投稿に私を向けることができますか?ありがとう!

答えて

0

あなたの意見では、あなたのコントローラの仕事です。ビューはシンプルなものにしてください

<md-card ng-repeat="things in dataToDisplay"></md-card> 

次にコントローラで、あなたのURLに依存し、$scope.dataを設定します。

if($location.path() === '/limited') { 
    $scope.dataToDisplay = $scope.data.limited; 
} else if($location.path() === '/all') { 
    $scope.dataToDisplay = $scope.data.all; 
} 

はPS:あなたのコントローラーで$locationを注入することを忘れないでください。

+0

私は$ locationを注入する必要がありますか? – andrea

+0

@andreaはい、あなたのコントローラに注入してください – Mistalis

+0

私はそれが動作するようにはありません。私のhtmlは今あなたの例と全く同じように見え、私のjsはこのように見えます:$ inject = ['$ scope'、 'update'、 '$ document'、 '$ location']; /* @ngInject */ function Controller($ scope、update、$ document、$ location){ var NewsCtrl = this; if($ location.path()=== '/ home'){ NewsCtrl.dataToDisplay = NewsCtrl.data.all; } else if($ location.path()=== '/ limited'){ NewsCtrl.dataToDisplay = NewsCtrl.data.limited; } – andrea