←ホームに戻るリンクを私のAngularアプリを除く)のすべてのページのナビゲーションの下に表示したいのですがホームページです。そのため、URLがアプリのホームページ(ビュー)に既に存在する場合は、条件付きでリンクを追加し、ng-hide
を使用して非表示にします。
Angularの$location
サービスを使用しようとしましたが成功しませんでした
<p ng-hide="location.hash == '#/'" class="container"><a href="#topics">← 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 == '#/'
の値をログに記録するとtrue
が表示されるので、ng-hide
が機能するはずなので困惑しています。
基本的に私はここにリストされている3番目のアプローチを試しています: 現在表示しているページ/ルートに基づいてangular ng-hideを使用するにはどうすればよいですか? しかしそうではありませんそのページの他の2つのアプローチは、私が達成しようとしていることに対して非常に複雑に見えます。
何が足りないのですか?
まず最初に、実際に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())thoは、「/」のみを返すと思います。これは、角度のパスであり、#を気にする必要がないためです。
Angularはlocation
と呼ばれる$scope
変数を探しています。これを機能させたい場合は、次のことを行う必要があります。
$scope.location = window.location
コントローラで。ただし、実際には$location
を挿入し、$scope.location = $location
を設定する必要があります。