我正在使用angular-ui-fullcalendar來顯示和編輯事件。用戶可以登錄並在登錄時擁有唯一的uid
。我想用它來區分當前用戶與其他事件發生的事件。我想給當前的用戶事件另外backgroundColor
。用戶使用angularfire過濾數據
什麼是最好的辦法呢?
我嘗試了幾件事。我的數據是這樣的:
```
database
bookings
-KWnAYjnYEAeErpvGg0-
end: "2016-11-16T12:00:00"
start: "2016-11-16T10:00:00"
stick: true
title: "Brugernavn Her"
uid: "1f17fc37-2a28-4c24-8526-3882f59849e9"
```
我試圖篩選與當前用戶的UID的所有數據這樣
var ref = firebase.database().ref().child("bookings");
var query = ref.orderByChild("uid").equalTo(currentAuth.uid);
var bookings = $firebaseArray(query);
$scope.eventSources = [bookings];
這並不返回任何東西。如果我忽略第2行中的過濾器,它會按預期返回所有預訂。但即使過濾器工作,它也不能解決我的問題,因爲我想獲取當前用戶事件和所有其他事件。火力地堡沒有一個「不等於」過濾選項...
我通過每個記錄試圖循環和比較的UID和設置backgroundColor
如果條件滿足:
var ref = firebase.database().ref().child("bookings");
var bookings = $firebaseArray(ref);
bookings.$ref().on("value", function(snapshot) {
var list = snapshot.val();
for (var obj in list) {
if (!list.hasOwnProperty(obj)) continue;
var b = list[obj];
if (b.uid === currentAuth.uid) {
b.className = "myBooking";
b.backgroundColor = "red";
}
}
});
$scope.eventSources = [bookings];
但是這會導致同步問題,所以分配給$ scope.eventSources的'預訂'數組未被修改。我試圖在異步代碼塊中移動$ scope.eventSources = [bookings],但FullCalendar顯然無法處理它,並且什麼也不渲染。
我也試過,但沒有運氣之一:
bookings.$loaded()
.then(function(data) {
$scope.eventSources = [data];
})
.catch(function(error) {
console.log("Error:", error);
});
什麼是我的問題的最佳解決方案?
這是一個非常實用的例子[這裏](https://gist.github.com/katowulf/f78d4a224c06a643ddfa)和[here](http://jsfiddle.net/katowulf/uoe5yt8x/) – Kato