javascript - 根据 Angular 中的 Ng-Repeat 中当前选定的菜单项显示元素

标签 javascript html angularjs

我的应用程序中有一个导航栏,我想在单击时显示与所选导航项图像相关的内容。导航项和图像都位于 Controller 中的同一对象数组中,但是我不知道如何实现我想要的。您能否查看下面的代码并引导我找到合适的解决方案?

HTML

<ul id="nav-items">
    <li ng-repeat="n in coreCtrl.navItems">{{n.title}}</li>
</ul>

<ul id="backgrounds">
    <li ng-repeat="i in coreCtrl.navItems" ng-show"some-expression">
        <img ng-src="{{i.bgUrl}}" />
    </li>
</ul>

Angular 控制

self.navItems = [
     { title: 'item1', bgUrl: 'img1.jpg' }
   , { title: 'item2', bgUrl: 'img2.jpg' }
   , { title: 'item3', bgUrl: 'img3.jpg' }
   , { title: 'item4', bgUrl: 'img4.jpg' }
   , { title: 'item5', bgUrl: 'img5.jpg' }
];

最佳答案

好吧,首先我们需要在点击标题时进行更改。所以让我们添加一个 ng-click

<ul id="nav-items">
  <li ng-repeat="n in coreCtrl.navItems" 
      ng-click="coreCtrl.selectedItem=n">{{n.title}}</li>
</ul>

然后,如果该项目是 selectedItem,我们将显示图像。

<ul id="backgrounds">
    <li ng-repeat="i in coreCtrl.navItems" ng-show"i===coreCtrl.selectedItem">
        <img ng-src="{{i.bgUrl}}" />
    </li>
</ul>

// Set default selected item in your controller.
self.selectedItem = self.navItems[0];

这种情况下的另一个非常常见的模式是向菜单项添加事件类:

<ul id="nav-items">
  <li ng-repeat="n in coreCtrl.navItems" 
      ng-click="coreCtrl.selectedItem=n"
      ng-class="{'active':coreCtrl.selectedItem===n}">
    {{n.title}}
  </li>
</ul>

关于javascript - 根据 Angular 中的 Ng-Repeat 中当前选定的菜单项显示元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39781162/

相关文章:

javascript - 如果 props 没有值,则不显示 div

javascript - 对数组中的范围进行排序

html - ListView 的响应式设计代码

javascript - 如何在angular js中分组和rowspan

javascript - AngularJS:从 Controller 内访问元素指令的属性

javascript - 求和特定数组值取决于其他数组的索引值列表

javascript - jQuery Datepicker 打开时的 knockout 更改会破坏 Datepicker

javascript - VueJS中输入值变化时如何在div中显示输入值?

php - 我如何找到哪个域从我的服务器请求 iframe 并将域保存在数据库中

angularjs - 如何使用 Angular orderBy 过滤器按字母顺序对字符串数组进行排序?