2014-09-13 4 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); 
} 

я хочу, чтобы при нажатии на кнопку Регистрация, делая FadeOut в кнопку регистрации и FadeIn в кнопку 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

+0

Отлично. Не могли бы вы отметить мой ответ так, как это принято, чтобы другие могли видеть, что это разрешено? – rmehlinger

Смежные вопросы