AngularJS: if item in loop equals current location then print specific class
我有以下代码:
1 2 3 4 5 6 7 8 9 10
| <ul ng-init="urls = ['/home', '/news', '/contactUs']">
<li ng-repeat="url in urls>
{{url}}
</li>
</ul> |
对于ng-repeat循环中的每个标记,如果{{url}}等于window.location.href.split('?')[0],那么我想打印该标记的当前页面类。否则,不应显示。简单来说,我想要这样的东西:{{url || if(url == window.location.href.split('?')[0])}}。
安古拉吉斯有可能吗?那怎么办呢?
- 请注意,除了主机("example.com")和路径名("/home")之外,window.location.href还将包括方案("http"或"https")。
- @Adriani6指令在这里不适用,因为这里我们只想隐藏一个类,而不是整个a元素。
- @Nodeev我已经编辑并建议了一个更具体的标题,如果你想问的不是这个标题,请随意回滚或进一步更新它。(我想,前一个有点抽象,看不出有人在问什么。)
如果你有['example.com/home', 'example.com/news', 'example.com/contactUs'],那么我建议:
但如果你有['/home', '/news', '/contactUs'],这就足够了:
以你的示例urls为例,我认为这更好,因为href将包括方案("https"),因此不会出现匹配项。
当然,如果更合适的话,您可以用精确匹配的方法替换indexOf(...)。
它利用了这样一个事实:ng-class可以接受从潜在类('current-page')到表达式的映射,这些表达式在计算后被强制为布尔值(例如indexOf(...))。看看这些文档。
- 您可以编辑问题中更新数组的答案吗?
- @nodeev在你更新的问题之后更新了我的答案。
- 伟大的!谢谢你的帮助