angularjs – Angular JS:由控制器创建的菜单项上的“active”类

我正在使用 JSON服务列出菜单项(链接).当导航不同的路线/页面时,我希望将“活动”类添加到当前活动的链接(即用户所在的页面).

我用这个jsfiddle作为起点:http://jsfiddle.net/p3ZMR/4/@H_301_2@

我在stackoverflow上也找到了几个答案,但它们都与上面的解决方案类似.@H_301_2@

但是,如果链接是通过ng-repeat生成的,那么该解决方案不起作用:@H_301_2@

<ul class="main-menu">
    <li ng-repeat="page in pages">
      <a href="/#/{{page.id}}" active-link="active">{{page.name}}</a>
    </li>
  </ul>

似乎在控制器添加链接之前调用了该指令.@H_301_2@

有没有办法解决这个问题?@H_301_2@

主要的编程概念是关注点的分离.我个人不喜欢在我的观点中保持逻辑或比较.我宁愿在javascript中保持业务逻辑和比较

HTML@H_301_2@

<ul class="main-menu">
    <li ng-repeat="page in pages">
        <a ng-click="menu(page)" ng-class="{ active: isActive(page.url)>{{page.name}}</a>
    </li>
</ul>

使用Javascript@H_301_2@

angular.module('link',[])

function myController($scope,$location){ 
    $scope.links = [
     { url: "one",name: "One"},{ url: "two",name: "Two"},{ url: "",name: "Three"}
    ];

    $scope.isActive = function (viewLocation) {
        var pattern = '/' + viewLocation,re = new RegExp(pattern);
        return re.test($location.path());
    };

    $scope.menu = function (location) {
        $location.path('/' + location.location);
    };
}

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...