2016-07-22 4 views
0

ng-ifのロジックをhtmlから移動してコントローラ内の関数に変換するにはどうすればよいですか?ng-ifコントローラが複数のロケーションパスに指令を表示する機能

<menu ng-if="location.path() === '/salad' || location.path() ==='/main'"></menu> 

コントローラ:???

私は行くが、このdidntの仕事を与えることを試みる:

HTML:<menu ng-if="menuItem()"></menu>

コントローラ:

$scope.menuItem = function() { 

    return menuItem === $location.path('/salad') || $location.path('/main'); 
} 

答えて

1

あり表示されません。あなたのディレクティブの使用に間違いがありますが、関数ではなく表現でng-ifを使用することが望ましいです。これは関数がダイジェストサイクルごとに評価されるためです。

あなたのエラーは実際にはあなたが式をmenuItemで書いた方法から来ていると思います。

試してみてください。

$scope.menuItem = function() { 
    return ($location.path() === '/salad' || $location.path() ==='/main') 
} 
+0

私はちょうどあなたの提案を試みたが、私は/サラダまたは/メインにURLを変更したときに指令

は表示されませんでした。 の中に問題がありますか?それらのng-ifは、場所にも基づいて要素を表示することにも依存します。 – peeli

+0

ng-ifを使って経路に基づいて表示することは、ベストプラクティスではありません。私はあなたのような何かをしたと仮定しています: $ routeProvider.other({ templateUrl: 'something.html'、 コントローラ: 'somecontroller' }); ルーティングのやり方を再評価します。 [routeProvider](https://docs.angularjs.org/api/ngRoute/provider/$routeProvider)をご覧ください。 – jktin12

+0

これはうまくいった、ちょっとハードリフレッシュする必要がある – peeli

関連する問題