10

ホームページを除く Angular アプリのすべてのページのナビゲーションの下に← ホームに戻るリンクを表示したいと思います。ng-hideそのため、条件付きでリンクを追加し、URL が既にアプリのホームページ (ビュー) にある場合を使用して非表示にしたいと思います。

angularの$locationサービスを使用してみましたが成功しませんでした

<p ng-hide="location.hash == '#/'" class="container"><a href="#topics">&larr; Back to Home</a></p>

次のバリエーションを試しました。

ng-hide="location.hash == '#/' " //console.log shows true
ng-hide="location.hash === '#/' " //console.log shows true
ng-hide="location.hash == '' "    //console.log shows false

location.hash == '#/'ホームページで when の値をログに記録すると が得られるtrueので、私は困惑していますng-hide

基本的に、ここにリストされている 3 番目のアプローチを試しています: 現在のページ/ルートに基づいて角度のある ng-hide を使用するにはどうすればよいですか? しかし、それは機能していません。そのページの他の 2 つのアプローチは、私が達成しようとしていることに対して複雑すぎるようです。

私は何が欠けていますか?

4

2 に答える 2

19

まず最初に、実際に window.location javascript オブジェクトを使用している location.hash または location.url を使用する場合、angular が提供する $location サービスを使用する必要があります。したがって、コントローラーで次のように作成します。

$scope.currentPath = $location.path();

そしてあなたのhtmlで:

<div ng-hide="currentPath === '/'"></div>

「#/」と「/」には注意が必要ですが、html5 モードのみを使用しているため、$location.path が何を返すかはわかりませんが、console.log($location で簡単に確認できます.path()) これは「/」のみを返すと思います。

于 2014-07-24T21:01:04.333 に答える
0

$scopeAngular は という変数を探していますlocation。これを機能させたい場合は、次のことを行う必要があります。

$scope.location = window.location

あなたのコントローラーで。$locationしかし、実際に注入して設定する必要があります$scope.location = $location

于 2014-07-24T20:58:35.530 に答える