Javascript 获取第一个条件为角的元素
我有以下Angular 1.0代码:Javascript 获取第一个条件为角的元素,javascript,angularjs,Javascript,Angularjs,我有以下Angular 1.0代码: <div ng-repeat="ebook in vml.ebooks"> <img data-ng-src="{{ ebook.files.filter(function (v) { return v.type === 'ebook.cover'; })[0].url }}" /> </div> 我怎样才能解决这个问题 是否可以将其转换为过滤器 在对象(文件)列表中,我需要获取具有给定类型的第一个对象。
<div ng-repeat="ebook in vml.ebooks">
<img data-ng-src="{{ ebook.files.filter(function (v) { return v.type === 'ebook.cover'; })[0].url }}" />
</div>
我怎样才能解决这个问题
是否可以将其转换为过滤器
在对象(文件)列表中,我需要获取具有给定类型的第一个对象。当然。。。创建自己的筛选器,然后将其传递到数据ng src:
data-ng-src="{{ ebook.files | myFilter:'ebook.cover' }}
不能在角度表达式中使用
Array.prototype.filter
方法。但是,您应该能够使用角度过滤器来完成此操作。相应的表达式如下所示:
data-ng-src="{{ (ebook.files | filter:{type:'ebook.cover'})[0].url }}"
这种逻辑应该在控制器或自定义过滤器中。我认为这并不是OP想要的。首先,它需要定制过滤器
myFilter
,然后它还将返回过滤后的数组,而ngSrc
将期望url
。这取决于您如何实现过滤器。Mathew没有为过滤器编写代码,但他只是为Miguel提供了足够的信息来解决他的问题。我想按类型进行过滤,但得到一个数组或列表中的第一项。我想向过滤器表明我是想要所有匹配项还是第一个匹配项。但总是得到文件。然后,它将指定要使用的属性。但我愿意接受这样的建议,这是行不通的。始终返回列表中的第一个,而不是类型等于ebook.cover的。知道为什么吗?我想你的意思是“{(ebook.files | filter:{type:'ebook.cover'})[0].url}”。。。在这种情况下它是有效的。你是对的,我的意思是{type:'ebook.cover'}
当然。
data-ng-src="{{ (ebook.files | filter:{type:'ebook.cover'})[0].url }}"