AngularJS:如果循环中的项等于当前位置,则打印特定的类

时间:2018-08-12 16:55:57

标签: javascript html angularjs angularjs-ng-repeat angularjs-filter

我有以下代码:

image_picker

对于$("body").on("click", ".quickview-modal", function() { $(this).css('display','none'); $(this).parent().closest('.carousel-inner').css('overflow','hidden'); }); 循环中的每个<ul ng-init="urls = ['/home', '/news', '/contactUs']"> <li ng-repeat="url in urls> <a class="current-page" href="{{url}}"> {{url}} </a> </li> </ul> 标签,如果<a>等于ng-repeat,那么我想为该{{1}打印当前页面类} 标签。否则,不应显示它。 简单来说,我想要这样的东西:{{url}}

AngularJS是否有可能?那怎么办?

1 个答案:

答案 0 :(得分:0)

如果您有['example.com/home', 'example.com/news', 'example.com/contactUs'],我建议这样做:

<a ng-class="{ 'current-page': (window.location.host + window.location.pathname).indexOf(url) >= 0 }">{{url}}</a>

但是如果您有['/home', '/news', '/contactUs'],那就足够了:

<a ng-class="{ 'current-page': window.location.pathname.indexOf(url) >= 0 }">{{url}}</a>

考虑到您的示例urls,我认为这样做会更好,因为href也将包含方案(例如'https'),因此不会弹出匹配项。

如果更合适,您当然可以用完全匹配替换indexOf(...)

它利用了一个事实,即ng-class可以将映射从潜在类('current-page')转换为在求值后被强制转换为布尔值的表达式(例如indexOf(...)表达式)。参见these docs