我覺得我必須錯過一些非常基本的東西。以下是我服務的一部分:
angular.module('fire')
.constant('FIREBASE_URI', 'https://___.firebaseio.com/')
.factory('syncArraySvc', function(FIREBASE_URI, $firebaseArray) {
var buildingsUri = FIREBASE_URI + "buildings";
var buildings = $firebaseArray(new Firebase(buildingsUri));
console.log(buildings);
var getBuildings = function() {
return buildings;
};
var addBuilding = function(item) {
buildings.$add(item);
};
return {
getBuildings: getBuildings,
addBuilding: addBuilding
};
});
中間的console.log只是返回一個空數組。如果我嘗試從另一個控制器調用syncArraySvc.getBuildings()
函數,我也會得到一個空數組。不知何故,$add(item)
的作品,如syncArraySvc.addBuilding(item)
。我錯過了什麼?
'$ loaded'承諾在加載* initial *數據時解析。當附加項目添加到數組時,它不*解析*。所有你需要做的是'$ scope.buildings = $ firebaseArray(new Firebase(buildingsUri))'。請不要使用'console.log'來調試AngularFire數據,這很容易導致誤解。相反,只是把這個地方放在你的視圖中:'
' –@FrankvanPuffelen我的上面的答案會確保數據已被添加或沒有..我相信它肯定會工作並顯示更新的數據 –
要正確地擴展'$ firebaseArray' ,閱讀:https://www.firebase.com/docs/web/libraries/angular/guide/extending-services.html#section-firebasearray –