在我的网站中,人们可以创建活动并注册。在事件列表中有两个按钮(注册/注销)。 按钮(注册):当您按下此按钮时,您将在助手等事件中添加您。 按钮(注销)。当您按此按钮时,您将删除事件。 这很好用,但问题在于过滤器:
{{ event.attendees }} // working well because is updated when press the button
{{ ([event.attendees] | filter:currentUser.id).length }} // not working always is 0
<button id="signup" ng-click="sign(event.attendees, currentUser.id)" ng-show="([event.attendees] | filter:currentUser.id).length == 0">
<button id="signdown" ng-click="sign(event.attendees, currentUser.id)" ng-show="([event.attendees] | filter:currentUser.id).length == 0">
controller(){
$scope.signup = function(attendees, currentUser_id) {
attendees.push(currentUser_id);
}
我希望当你按下按钮注册按钮注册时按下fadeout并按下按钮时fagin,但过滤器不能正常工作,因为不要更新。
答案 0 :(得分:0)
您将event.attendees包装在方括号中。这意味着您实际在做的是使用单个元素(您的与会者数组)过滤数组。这将永远找不到您要搜索的字符串。试试这个:
{{ (event.attendees | filter:currentUser.id).length }}
现在,我在页面上的多个位置使用相同的过滤器时遇到了无限摘要循环的糟糕体验,这实际上并不是过滤器应该被使用的方式。因此,我建议您考虑在控制器中添加isSignedUp函数。您可以使用underscorejs轻松实现此目的:
$scope.isSignedUp = function(attendees, id) {
return _.findWhere(attendees, {id: id}) !== undefined;
}