我有一个类似于这个的模型:
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中创建类似的东西?
答案 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>