У меня есть набор событий, которые я повторяю, и они уже могут быть отфильтрованы окном поиска.
<div class="well well-sm" ng-repeat="allEvent in allEvents | filter:searchText | orderBy:sortOrder" ng-if="allEvent.event.name">
<h3 id="cabynTitles">{{allEvent.event.name}}</h3>
<h3 id="cabynMemNum">{{allEvent.event.time}} </h3>
<button class="btn" ng-click="joinEvnt(allEvent.event.$id)">Join</button>
</div>
Однако я застрял, пытаясь не показывать события, которые пользователь уже собирается посетить. Эти события хранятся в firebase.
.filter('myEvents', function () {
return function (items) {
var filtered = [];
for (var i = 0; i < items.length; i++) {
var item = items[i];
var ref = new Firebase(furl + "/users/" + auth.uid + "/events/");
if (ref.child.equalTo(allEvent.event.$id) !== allEvent.event.$id) {
filtered.push(item);
} }
return filtered;
} }])
Я думаю, что это должно выглядеть примерно так, но я не могу передать «allEvent.event.$id» фильтру (который является ключом firebase для события). Любая помощь будет потрясающей, спасибо!
Изменить
Текущие данные выглядят так:
мои события:
"events": {
"-KAw4iDuN2KdN-5pfQs0": true, //Instead of true, I can also make this the uid
"-KAw7Nn04WEoTDbatPn4": true
}
Все события: я использую geofire, поэтому я получаю каждое событие во время функции geoQuery, и с его помощью я получаю все детали события.
"-KAw4iDuN2KdN-5pfQs0": {
"name": "Event Name"
"description": "Blah blah"
...
}
Я понимаю, что теперь данные должны быть отфильтрованы, прежде чем я их повторю, и, поскольку я использую geoFire, я пытаюсь отфильтровать их с помощью чего-то вроде этого во время geoQuery:
if (myEvents.indexOf(key) == -1) {
//push evenDetails to array to show in scope
};
Где key — это uid события, а myEvents — это firebaseArray данных myEvents, указанных выше. Но я предполагаю, что indexOf не работает с firebaseArrays? Потому что это не работает.