我有一组重复的事件,它们已经可以通过搜索框进行过滤。
<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 是上面的 myEvents 数据的 firebaseArray。但我猜 indexOf 在 firebaseArrays 上不起作用?因为这行不通。