У меня есть набор событий, которые я повторяю, и они уже могут быть отфильтрованы в окне поиска.Фильтр ng-repeat с данными Firebase
<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 + "https://stackoverflow.com/users/" + auth.uid + "/events/");
if (ref.child.equalTo(allEvent.event.$id) !== allEvent.event.$id) {
filtered.push(item);
} }
return filtered;
} }])
Я думаю, что это должно выглядеть примерно так, но я не могу передать «allEvent.event. $ ID» в фильтр (который является firebase ключ к этому событию). Любая помощь была бы потрясающей, спасибо!
Редактировать
Текущие данные выглядит как-
myEvents:
"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
};
Где ключ - это uid события, а myEvents - это firebaseArray данных myEvents сверху. Но я предполагаю, что indexOf не работает в firebaseArrays? Потому что это не работает.
Звучит хорошо.Загрузка их не проблема, у меня есть allEvents и myEvents, но как сделать шаг №3? Я пробовал такие вещи, как myEvents.indexOf («Ключ одного единственного allEvent»), но это, похоже, не работает. – Alteredorange
Это зависит от того, что вы храните о событиях, как в глобальном списке, так и в списке пользователей. Это поможет, если вы добавите репрезентативный фрагмент данных JSON (текст, пожалуйста, никаких скриншотов) на ваш вопрос. –
Спасибо за помощь Фрэнк, я добавил данные. Я использую geoFire, поэтому в идеале я пытаюсь определить, соответствует ли событие myEvent во время функции geoQuery. – Alteredorange