繰り返す一連のイベントがあり、検索ボックスで既にフィルター処理できます。
<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"
...
}
データを ng-repeat する前にフィルタリングする必要があることに気付きました。geoFire を使用しているため、geoQuery 中に次のような方法でフィルタリングしようとしています。
if (myEvents.indexOf(key) == -1) {
//push evenDetails to array to show in scope
};
key はイベントの uid で、myEvents は上記の myEvents データの firebaseArray です。しかし、indexOfはfirebaseArraysでは機能しないと思いますか? これは機能していないためです。