0

ページを変更し、location.path()などを使用して関連するURLフラグメントを取得するときに、要素のクラスを変更したいと思います。

ルーティングに$routeProviderを使用しています。フィドルは正しく表示されませんが、私のコードでは正常に機能します。私が抱えている問題は、次のページをロードしても更新されないことです。

このコードは、必要なURLフラグメントを取得します。

$scope.locationPath = $location.path().replace(/^\/([^\/]*).*$/, '$1');

これは非常に単純なJSfiddleです:http: //jsfiddle.net/timothybone/kmBXv/1/

4

3 に答える 3

2

ウィルの答えはほぼ正しいです。関数をラップ$location.path()して、1回だけでなく、すべてのダイジェストで実行されるようにする必要があります。

$scope.$watch(function () {
  return $location.path();
}, function() {
  return $location.path().replace(/^\/([^\/]*).*$/, '$1');
});

ワーキングフィドル: http: //jsfiddle.net/kmBXv/3/

于 2012-11-20T07:04:37.747 に答える
0

このようなものはどうですか?

$scope.$watch($location.path(), function() {
  return $location.path().replace(/^\/([^\/]*).*$/, '$1');
}
于 2012-11-20T02:37:49.297 に答える
0

$ watchを使用する代わりに:

<li ng-class="{active:isActiveRoute('edit')}">edit</li>
<li ng-class="{active:isActiveRoute('list')}">list</li>

次に、コントローラーで:

$scope.isActiveRoute = function(route) {
   // I added '/' instead of using a regex to remove it from path()
   return '/' + route === $location.path();
};

See also AngularJs: stateful client-side routing, which has a working fiddle.

于 2012-11-20T18:20:07.340 に答える