如何确定 AngularJS 中的 path/route 以指示菜单中的当前视图
How to determine path/route in AngularJS to indicate current view in menu
我正在编写一个使用 Bootstrap 的小型 AngularJS 应用程序。我正在使用 Boostraps Nav 组件,我想突出显示当前页面的菜单项。
我需要能够确定与当前视图关联的 path/route,以便我可以为我的 Boostrap Nav 链接设置 CSS class。
<ul class="nav navbar-nav">
<li data-ng-class="{'active': true}">
<a href="#">Home <span class="sr-only" data-ng-show="false">(current)</span></a>
</li>
<li data-ng-class="{'active': false}">
<a href="#/about">About Us <span class="sr-only" data-ng-show="false">(current)</span></a>
</li>
<li data-ng-class="{'active': false}">
<a href="#/services">Services <span class="sr-only" data-ng-show="false">(current)</span></a>
</li>
<li data-ng-class="{'active': false}">
<a href="#/testimonials">Testimonials <span class="sr-only" data-ng-show="false">(current)</span></a>
</li>
<li data-ng-class="{'active': false}">
<a href="#/contact">Contact <span class="sr-only" data-ng-show="false">(current)</span></a>
</li>
</ul>
我想将 LI 元素的 data-ng-class 中的 "true/false" 值替换为一个表达式,当 LI 与当前显示的视图以及数据匹配时,该表达式的计算结果为 true -ng-show 在相同情况下评估为真。
这是实现此目标的最佳方法吗?
我认为没有任何其他方法可以实现这一目标。以下是暂定代码。
在您的控制器中添加一个函数 say isActive()
,如下所示,
$scope.isActive = function (route) {
return route === $location.path();
};
在你的 HTML 中,将 true/false
值替换为 ng-class
中的函数,如下所示,
<ul class="nav navbar-nav">
<!-- use the `isActive()` function here in `ng-class` -->
<li data-ng-class="{'active': isActive('/')}">
<a href="#">Home <span class="sr-only" data-ng-show="false">(current)</span></a>
</li>
<li data-ng-class="{'active': isActive('/about')}">
<a href="#/about">About Us <span class="sr-only" data-ng-show="false">(current)</span></a>
</li>
...
</ul>
一旦请检查控制器中返回的 $location.path()
是什么,并更改 HTML 代码中 isActive()
函数的参数值。它会根据您是否使用 html5
模式(包括或不包括 #
)而改变。
我正在编写一个使用 Bootstrap 的小型 AngularJS 应用程序。我正在使用 Boostraps Nav 组件,我想突出显示当前页面的菜单项。
我需要能够确定与当前视图关联的 path/route,以便我可以为我的 Boostrap Nav 链接设置 CSS class。
<ul class="nav navbar-nav">
<li data-ng-class="{'active': true}">
<a href="#">Home <span class="sr-only" data-ng-show="false">(current)</span></a>
</li>
<li data-ng-class="{'active': false}">
<a href="#/about">About Us <span class="sr-only" data-ng-show="false">(current)</span></a>
</li>
<li data-ng-class="{'active': false}">
<a href="#/services">Services <span class="sr-only" data-ng-show="false">(current)</span></a>
</li>
<li data-ng-class="{'active': false}">
<a href="#/testimonials">Testimonials <span class="sr-only" data-ng-show="false">(current)</span></a>
</li>
<li data-ng-class="{'active': false}">
<a href="#/contact">Contact <span class="sr-only" data-ng-show="false">(current)</span></a>
</li>
</ul>
我想将 LI 元素的 data-ng-class 中的 "true/false" 值替换为一个表达式,当 LI 与当前显示的视图以及数据匹配时,该表达式的计算结果为 true -ng-show 在相同情况下评估为真。
这是实现此目标的最佳方法吗?
我认为没有任何其他方法可以实现这一目标。以下是暂定代码。
在您的控制器中添加一个函数 say isActive()
,如下所示,
$scope.isActive = function (route) {
return route === $location.path();
};
在你的 HTML 中,将 true/false
值替换为 ng-class
中的函数,如下所示,
<ul class="nav navbar-nav">
<!-- use the `isActive()` function here in `ng-class` -->
<li data-ng-class="{'active': isActive('/')}">
<a href="#">Home <span class="sr-only" data-ng-show="false">(current)</span></a>
</li>
<li data-ng-class="{'active': isActive('/about')}">
<a href="#/about">About Us <span class="sr-only" data-ng-show="false">(current)</span></a>
</li>
...
</ul>
一旦请检查控制器中返回的 $location.path()
是什么,并更改 HTML 代码中 isActive()
函数的参数值。它会根据您是否使用 html5
模式(包括或不包括 #
)而改变。