javascript - AngularJS 根据条件改变 <li> 元素标签

标签 javascript html css angularjs

我有一个列表,其中每个列表元素可以有不同的样式。简单 HTML看起来像这样:

<li class="active"><a href="[link]">One</a></li>
<li><a href="[link]">Two</a></li>    

当用户点击 two然后我希望事件元素移动到该列表项。我尝试了以下解决方案。

// In my menu controller

// Determines which link that should be active
$scope.activeLinkID = 0;

// Associative array with link names and paths
$scope.linkArray = {};

// Index 0 = linkName, index 1 = linkPath
$scope.linkArray[0] = ["One", "#/link/one"]
$scope.linkArray[1] = ["Two", "#/link/two"]
[...]

我试过这样在我的 View 中显示它:

<li ng-repeat="(linkIndex, link) in linkArray | orderBy:linkIndex"><a href="{{link[1]}}">{{link[0]}}</a></li>

但是我在尝试将元素添加到我的 <li> 时卡住了标签。条件是 activeLinkID == linkIndex然后添加 class="active"。

我不确定使用 AngularJS 实现此目标的最佳方法是什么? .最好的方法是什么?

最佳答案

在你的 Controller 中

$scope.selectedIndex = -1;
$scope.links = [
  ["One", "#/link/one"],
  ["Two", "#/link/two"]
];

在你看来

<li ng-repeat="link in link" 
    ng-class="{'active': $parent.selectedIndex == $index}">
      <a ng-click="$parent.selectedIndex = $index">{{link[0]}}</a>
</li>

这是一个工作演示 http://jsbin.com/exafUmuq/2/edit?html,js,output

您似乎正在尝试完成 ui-router 的事情是为了解决而建立的。您应该花一些时间来了解它,它会让您省去很多麻烦。

可以在这里找到有关 ui-router 的精彩视频
https://egghead.io/lessons/angularjs-introduction-ui-router

关于javascript - AngularJS 根据条件改变 <li> 元素标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21026638/

相关文章:

javascript - 表单提交同时适用于 html 但不适用于 javascript

html - 垂直居中对齐div问题以及图像

Javascript:从选择输入中获取多个值

javascript - 为什么我的 Angular 数据绑定(bind)不会在 View 中更新?

javascript - 从 ES6/ES7 中的特定结构化对象数组中提取值

html - 在 div 的所有四个边上添加元素

css - HTML 5 Autofocus 搞乱了 CSS 加载

javascript - 如何为子窗口设置父窗口值?

html - 图像周围的 anchor 标记导致填充问题

css minifier 合并具有相同属性的选择器