52

テンプレートの URL からの現在のパスが必要です ($location.path の内容)。しかし、私はたくさんのコントローラーを持っているので、コントローラー経由ではありません(そして、の宣言を複製したくない$scope.currentUrl = $location.path;)。アドバイスをありがとう。

4

2 に答える 2

92

AngularJS テンプレートはスコープ内で利用可能なものしか見ることができないため、何らかの方法で $location サービスをスコープ内に配置する必要があります。$rootScope と呼ばれる AngularJS アプリケーションで常に使用できるスコープが 1 つあるため、ユースケースに使用できます。

できることは、モジュールの run() メソッドを使用して、$rootScope で $location を公開することです。

var myApp = angular.module('myApp', []).run(function($rootScope, $location) {
    $rootScope.location = $location;
});

これにより、すべてのテンプレートで「場所」を使用できるようになるため、後でテンプレートで実行できます。

Current path: {{location.path()}}
于 2012-08-13T13:57:32.727 に答える
1

別の方法として、よりセマンティックで汎用性の高いui-routerを使用してから、コントローラーで現在の状態を取得し、それを に保存することもでき$scopeます。

app.controller('MyCtrl', ['$scope', '$state', function MyCtrl($scope, $state) {
  $scope.state = $state.current.name;
  ...
}
于 2014-10-24T18:08:07.320 に答える