2015-03-22 2 views
3

С клиентской стороны у меня есть $ scope.loggedInUser, который ссылается на схему пользователя мангуста. Другая схема, которую я использую, - это схема сеанса. Каждый пользователь может присоединиться к разговору, в этом случае он будет добавлен в conversation.participants массив, который определяется так:Проверьте, содержит ли массив значение в angularjs

var conversationsSchema = new Schema({ 
    participants: {type: Array, default: []} 
}); 

Я хочу, чтобы отобразить только разговор с текущим пользователем (т.е. loggedInUser) в массиве участников. Я попробовал

ng-repeat="conversation in conversations" ng-if="conversation.participants.indexOf(logged_in_user) > -1" 

но я не вижу никого. Как я могу проверить, существует ли элемент в массиве в ng-if (или вообще в угловом) правильно?

+0

Есть ли у вас одно и то же определение беседы obj и logged_in_user obj? –

+0

@SatyamKoyani chat.participants - это массив объектов пользователей. Точка фильтрации фактически должна найти, если один из пользователей в этом массиве является в настоящее время зарегистрированным пользователем. – vitalym

ответ

2

Вы можете использовать filter как

ng-repeat="conversation in conversations | filter:logged_in_user" 

Я не уверен, если реализация вид сбоку будет копаться в вложенной коллекции, вы, возможно, придется фильтровать его в контроллере

filteredConversations = $filter(this.conversations, 
{name:logged_in_user},doFiltering); 

где фильтрация - это метод, позволяющий выполнять фактическую работу:

function (actual, expected) { 
return actual.participants.indexOf(expected) > -1; 
} 

не забудьте ввести $ filter в ваш контроллер, если вы сделаете это на стороне контроллера.

+0

здесь это возможно только через обзор? –

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