這是我今天早些時候發佈的一個問題的後續。我正在通過this book on using AngularJS with Firebase,這導致我發佈this question。我找到了一個解決方案,但我仍然不明白的是API Documentation for a $firebaseArray
中的示例似乎並未將其作爲異步請求處理。數據請求有時是異步的
var list = $firebaseArray(new Firebase(URL));
// add an item
list.$add({ foo: "bar" }).then(...);
// remove an item
list.$remove(2).then(...);
// make the list available in the DOM
$scope.list = list;
此外,書籍中的示例似乎也同步處理請求。
# Service
var buildingsUri = FIREBASE_URI + '/buildings';
var ref = new Firebase(buildingsUri);
var buildings = $firebaseArray(ref);
var getBuildings = function() {
return buildings;
};
...
# Controller
$scope.buildings = syncArraySvc.getBuildings();
它是如何$scope.list
在第一個例子,$scope.buildings
在第二個例子中可以用數據來正確填充時,他們沒有檢查,以確保該請求已完成?
我假設firebase正在返回$ q承諾。這些通常會在請求完成後更新爲包含結果。當摘要運行時,視圖將隨着所述數據更新。 –
@KevinB我認爲我在追隨。根據[Angular的$ q服務的文檔](https://docs.angularjs.org/api/ng/service/$q),'$ firebaseArray()'必須包裝'then'和其他爲了返回所請求的數據而無需在客戶端代碼中進行回調,回調是否正確? – Shaun
不,我很確定它只是返回一個$ q的承諾。可以肯定的是,你應該看到的不僅僅是你的數據。它不能只是更新var來包含別的東西,它仍然是它返回給你的任何基礎對象。 –