javascript – 如何使用ng-if和ng-repeat? TL; DR;使用自定义过滤器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何使用ng-if和ng-repeat? TL; DR;使用自定义过滤器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1340字,纯文字阅读大概需要2分钟。
内容图文
![javascript – 如何使用ng-if和ng-repeat? TL; DR;使用自定义过滤器](/upload/InfoBanner/zyjiaocheng/712/1777d181af474afdbc86755669f3131b.jpg)
我有一个简单的导航对象设置,列出导航项(以及它们是否应该出现在主导航中).事实上,当我尝试将ng-if与ng-repeat混合时,事情就会分崩离析,但是当我将ng-show与ng-repeat混合时,它工作正常(但我最终得到了一堆隐藏的元素,我不这样做想要附加到DOM).
<section class="nav">
<a ng-repeat="(key, item) in route.routes"
ng-href="{{key}}"
ng-show="item.nav"
>
{{item.label}}
</a>
</section>
但以下不起作用(注意ng-show现在是ng-if):
<section class="nav">
<a ng-repeat="(key, item) in route.routes"
ng-href="{{key}}"
ng-if="item.nav"
>
{{item.label}}
</a>
</section>
routes对象看起来像
routes: {
'/home': { label: 'Home', nav: true },
'/contact': { label: 'Contact', nav: false},
// etc
}
尝试使用ng-if时收到以下错误:
Error: Multiple directives [ngIf, ngRepeat] asking for transclusion on:
我想它试图告诉我,我不能说明现有两次的声明.我可以在内部元素上使用ng-if,但我想我仍然会得到一堆空的外部标签.
解决方法:
可能有更好的解决方案,但在阅读上面的回复后,您可以尝试制作自己的自定义过滤器:
angular.module('yourModule').filter('filterNavItems', function() {
return function(input) {
var inputArray = [];
for(var item in input) {
inputArray.push(input[item]);
}
return inputArray.filter(function(v) { return v.nav; });
};
});
然后使用它:
<section class="nav">
<a ng-repeat="(key, item) in routes | filterNavItems"
ng-href="{{key}}">
{{item.label}}
</a>
</section>
这是Plunker:http://plnkr.co/edit/srMbxK?p=preview
内容总结
以上是互联网集市为您收集整理的javascript – 如何使用ng-if和ng-repeat? TL; DR;使用自定义过滤器全部内容,希望文章能够帮你解决javascript – 如何使用ng-if和ng-repeat? TL; DR;使用自定义过滤器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。