11

これは基本的にこの質問のフォローアップ質問です:AngularJS-templateUrlの生成に$ routeParamsを使用する方法は?。この質問の適切なコンテキストについては、そこにある私のコードを参照してください。

すべてのナビゲーション部分はうまく機能していますが、ナビゲートするときに、とに$scope基づいていくつかのプロパティを更新したいと思います。何かできると思ったのですが、なかなかうまくいかないようです。これが私が試したいくつかのことです:primaryNavsecondaryNav$watch

$scope.$watch($location.path(), function() {...}); //result in js error
$scope.$watch($location, function() {...}); //function runs once on page load, but not after that
$scope.$watch($window.location, function() {...}); //function runs once on page load, but not after that
$scope.$watch(window.location, function() {...}); //function runs once on page load, but not after that
$scope.$watch(window.location.href, function() {...}); //results in js error

おそらく、これらのナビゲーションを取得してすべてを更新し、ナビゲートしng-clickてすべてのアンカータグにを追加するメソッドをコントローラーに作成することができます。ただし、AngularJSについて私が本当に気に入った点の1つは、hrefsに実際のURLに見える値を使用することでした(例<a href="#/priNav/secNav">Foo</a>)。コントローラーのメソッドを経由せずにルーティングするときに、変更されたURLに基​​づいてモデルを更新することはできませんか?私が求めていることが理にかなっていることを願っています。

4

1 に答える 1

33
 $scope.$watch(function() {
    return $location.path();
 }, function(){
    ...
 });

スコープ内で評価できる関数または文字列を渡す必要があります

于 2012-07-19T15:54:21.627 に答える