【发布时间】:2014-08-19 19:39:25
【问题描述】:
当路径为http://localhost/#/ 或http://localhost/#/main/ 时,我尝试设置类.active,因为这两个路径是同一页。
为什么ng-class="{'class1' : expression1, 'class1' : expression2}" 不起作用?
控制器
angular.module('testApp')
.controller('NavmenuCtrl', function ($scope, $location) {
$scope.isActive = function (providedPath) {
return providedPath === $location.path();
};
});
部分视图
<li ng-class="{ active: isActive('/'), active: isActive('/main/')}">
<a href="#/">Home</a>
</li>
相关链接
Adding multiple class using ng-class
AngularJS ng-class multiple conditions
Oliver Tupman: Keep CSS classes out of your Angular controllers
【问题讨论】:
-
ng-class="{ active: isActive('/') || isActive('/main/')}"?您是否检查了$location.path()是否符合您的预期? -
它适用于一条路径而不适用于另一条路径吗?您也可以为类的一个实例使用 or 运算符编写它。 { 活动:条件1 ||条件2}
-
尝试将
console.log("provided: " + providedPath + " location: " + $location.path());插入到您的 isActive 方法中。然后,您可以在控制台中看到正在与什么进行比较,这通常可以指出问题。 -
它不起作用,因为 angular 将参数评估为一个对象,并且在您的示例中,属性 class1 是重复的。
-
@fiskers7 是的,我的原始代码仅适用于第二个 URL 路径。