2014-09-13 341 views
0

在我的網站上,人們可以創建活動並註冊。在事件列表中有兩個按鈕(註冊/註銷)。 按鈕(註冊):當您按此按鈕時,您將像助手一樣將您添加到該事件中。 按鈕(註銷)。當你按下這個按鈕時,你將移除事件。 這種運作良好,但問題是在過濾器:過濾器angularjs不工作

{{ 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); 
} 

我想,當你按下按鈕進行註冊按鈕註冊淡出和按鈕signdown淡入但過濾器不工作,因爲不更新。

回答

0

你正在用方括號包裝event.attendees。這意味着你實際上在做的是用一個單一的元素來過濾一個數組,這就是你的一系列參與者。這將永遠不會找到您正在搜索的字符串。試試這個:

{{ (event.attendees | filter:currentUser.id).length }} 

現在,我曾與無限消化不好的經驗用在頁面上的多個位置相同的濾波迴路,這是不是真的過濾器應該是反正使用的方式。所以,我建議你考慮在控制器中增加一個isSignedUp函數。您可以使用underscorejs輕鬆實現:

$scope.isSignedUp = function(attendees, id) { 
    return _.findWhere(attendees, {id: id}) !== undefined; 
} 
+0

謝謝,現在正在工作。 – user3902406 2014-09-13 21:06:12

+0

非常好。您介意將我的答案標記爲已接受,以便其他人可以看到它已解決嗎? – rmehlinger 2014-09-13 21:33:19