2016-05-23 98 views
1

帖子有一个标题和用户的数组谁已经很喜欢这个职位: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</span> 
    <span ng-hide="doesLike(post.likes)">Like this post</span> 
</div> 

,我在我的控制器doesLike()中有一个函数,它返回truefalse,具体取决于当前用户的用户名是否在传递给该函数的数组中。虽然这种方法可行,但我可以使用过滤器达到同样的效果,因为我认为这会更清洁?

+0

我会建议NG -if –

回答

1

我不认为这将是更清洁的视图中的逻辑。
会有什么清洁剂是不被消化循环利用ng-switch调用doesLike函数两次:

<div ng-repeat="post in posts"> 
    <h1>{{post.title}}</h1> 
    <span ng-switch="doesLike(post.likes)"> 
     <span ng-switch-when="true"> 
      Liked already 
     </span> 
     <span ng-switch-default> 
      Like this post 
     </span> 
    </span> 
</div> 
+0

谢谢 - 我喜欢这种方法 – tommyd456

0

你可以试试这个:

<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>