重複の可能性:
AngularJSでアクティブなタブスタイルを設定する
AngularJSを使用していて、そのタブのコンテンツが表示されているときはいつでも、メニューに「現在の」クラスを追加しようとしています。これは私がこれまでに持っているものであり、ページをロードするときに正常に機能します。
HTML:
<ul id="nav">
<li><a href="#/one" class="highlighttab">One</a></li>
<li><a href="#/two" class="highlighttab">Two</a></li>
</ul>
JS:
myModule.directive('highlighttab', function($location) {
var currentPath = "#" + $location.path();
return {
restrict: 'C',
link: function(scope, element, attrs) {
var href = element.attr("href");
if (currentPath == href)
{
element.addClass("current");
}
}
};
});
これにより、ページのURLがまたはである場合に、「current」クラスが正しい<a>
タグに追加されます。#/one
/#two
問題は、2番目のタブをクリックしても、クラスが追加されないことです。URLが変更されたときにディレクティブ内のコードを再実行する方法が必要だと思います。それを行う方法はありますか?