【发布时间】:2013-11-13 00:57:36
【问题描述】:
我有一个基于以下示例的菜单:
<nav data-ng-controller="menuContrl" class="menuItem">
<a data-ng-class='{active:isActive("/{{item.path}}")}' data-ng-repeat="item in menu" href="#/{{item.path}}">
<span>{{item.title}}</span>
</a>
</nav>
item 是一个对象,包含菜单项信息。以下是指令和控制器的 JavaScript 代码:
var app = angular.module("coolApp",[]);
function menuContrl($scope,$location){
$scope.menu=menu;
$scope.isActive = function(path){
return ($location.path()==path)
}
}
问题是ng-class 在页面渲染期间仅将class 设置为active 一次,但是当您单击菜单项时,什么也没有发生。我想这是因为菜单本身没有重新加载,我只是在<div> 中更改数据。那么如何在不重新加载整个页面的情况下使其工作呢?
【问题讨论】:
-
你的意思是这样的吗? http://jsfiddle.net/codef0rmer/uDPHL/
-
是的,如果您手动添加每个菜单项,这将起作用。当您使用 ng-repeat 生成菜单项时,它会按预期停止工作。
-
你可以使用
ui-sref-activesee here
标签: javascript angularjs