Angularjs - 如何查看值是否在数组中?

时间:2014-12-20 11:31:04

标签: javascript angularjs

我有一个类似于这个的模型:

model = [
 {
   name: 'Chris',
   age: '29',
   approvedBy: ['id1', 'id2', 'id3']
 },
 {
   // repeat...
 }
]

在我的视图中,我对模型进行了ng-repeat,并且有一个批准或拒绝用户的按钮。

基本上,其他用户可以批准或拒绝(如果之前已批准)用户。与FB帖子相似或不同。

<div ng-repeat='user in model'>
  <p>Name: {{user.name}} - Age: {{user.age}}</p>
  <p>Approved by {{user.approvedBy.length}} users.</p>
  <button>Approve {{user.name}}</button>
</div>

它工作正常,所以我可以批准并拒绝用户,但我无法弄清楚如何更改批准的文字。

如果用户已在会话中批准,我希望拒绝

我正在寻找像indexOf这样的内容来创建内联if ...或者过滤器......

应该看起来像:

<button>(user.approvedBy.indexOf(currentUserId)) ? 'Disapprove' : 'Approve'</button>

如何在Angularjs中创建类似的东西?

1 个答案:

答案 0 :(得分:0)

一个简单的方法是:

将自定义过滤器添加到控制器,然后在视图中使用它:

在控制器中:

$scope.model = [...];
$scope.approveTextFilter = function (user) {
   return user.approvedBy.indexOf(currentUserId) !== -1 ? 'Disapprove' : 'Approve';
};

在视图中:

<div ng-repeat='user in model'>
   ...
   ...
   <button ng-bind="user | filter:approveTextFilter"></button>
</div>