2017-10-24 11 views
1

私はwokringしていますが、statesui-srefをルーティングに使用しています(剣道もありますが、ルーティングには影響しません)。 htmlの5つのタブがあります(同じ状態 - ちょうど#tab-x#tab-1から#tab-5に変更)。私はすべてのタブと指示にバインドされた指示を持っていますが、私は$locationサービスを使って現在のURLを判断します。問題は次のとおりです。私は$場所を使用する場合、私はURLのハッシュ変更が成功しました - Angularディレクティブ

console.log($location)

それが正しい「#タブ-X」を示すが、とき$$ URLをいくつかの取り扱いを行うには、それは前のタブ値を示しています。私がここで使うことができる「場所変更成功」イベントはありますか?私が試した:

$scope.$on("locationChangeSuccess", function (event, next, current) { 
 
});

が、それはうまくいきませんでした。

+0

私の質問を慎重に調べると、「同じ状態」が表示され、このイベントは発生しません。 – basic

答えて

0

イベントがありますが、$記号が付いている:

$scope.$on("$locationChangeSuccess", function (event, next, current) { 
    console.log($location.hash()); 
}); 

あなたが値を取得する$location.hash()を使用することができます。

ここで働いplunker:https://plnkr.co/edit/KEJft8iwbxN3VfBhikIU?p=preview

https://docs.angularjs.org/api/ng/service/ $場所#event- $ locationChangeSuccess

これはangularjsイベントです。コメントで@Satpalが指摘しているように、$stateChangeSuccessイベントを使用することもできますが、状態は実際には変更されないため、イベントはおそらく呼び出されません(あなたはハッシュを含む状態を定義していません)。

また、$$のプレフィックス付きのプロパティは使用しないでください。これらのプロパティはプライベートであることを前提としています。

+0

$記号を書くのを忘れました。何らかの理由でそれが発生しません。 stateChangeSuccessも起動しません(私は、状態はハッシュ変更後も同じ値にとどまっているため)。 – basic

+0

URLハッシュが変更された場合は、 '$ locationChangeSuccess'が起動するはずです(これは1つのプロジェクトのどこかでテストされています)。状態が本当に変わっていないので、 '$ stateChangeSuccess'はおそらく発砲していません。 –

+0

あなたはいくつかのタイプミスがありませんか? –

関連する問題