Angularjs过滤器检查值是否在数组中

Angularjs过滤器检查值是否在数组中,angularjs,Angularjs,帖子有一个标题和一系列喜欢该帖子的用户: { "title" : "Example Title", "likes" : ["User 1", "User 2", "User 3"] } 我显示的“帖子”如下所示: <div ng-repeat="post in posts"> <h1>{{post.title}}</h1> <span ng-show="doesLike(post.likes)">Liked already<

帖子有一个标题和一系列喜欢该帖子的用户:

{
  "title" : "Example Title",
  "likes" : ["User 1", "User 2", "User 3"]
}
我显示的“帖子”如下所示:

<div ng-repeat="post in posts">
  <h1>{{post.title}}</h1>
  <span ng-show="doesLike(post.likes)">Liked already</span>
  <span ng-hide="doesLike(post.likes)">Like this post</span>
</div>

{{post.title}
已经喜欢了
喜欢这个帖子吗

我的控制器
doesLike()
中有一个函数,它根据当前用户的用户名是否在传递给函数的数组中返回
true
false
。虽然这种方法可行,但我是否可以使用过滤器实现我认为更干净的效果?

我不认为视图中包含逻辑会更干净。
更干净的方法是不要使用以下命令按摘要周期两次调用
doesLike
函数:


{{post.title}
已经喜欢了
喜欢这个帖子吗
您可以尝试以下方法:

<div ng-repeat="post in posts">
<h1>{{post.title}}</h1>
<span ng-if="doesLike(post.likes)">Liked already</span>
<span ng-if="!doesLike(post.likes)">Like this post</span>

{{post.title}
已经喜欢了
喜欢这个帖子吗

我建议使用ng ifThanks-我喜欢这种方法
<div ng-repeat="post in posts">
<h1>{{post.title}}</h1>
<span ng-if="doesLike(post.likes)">Liked already</span>
<span ng-if="!doesLike(post.likes)">Like this post</span>