【发布时间】:2015-06-19 19:54:43
【问题描述】:
这是我今天早些时候发布的一个问题的后续。我正在经历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 我想我在关注。基于documentation on the $q service from Angular,
$firebaseArray()必须包装then和其他回调才能返回请求的数据而不需要在客户端代码中进行回调,这听起来对吗? -
不,我很确定它只是返回一个 $q 承诺。 console.log 可以肯定的是,您应该看到的不仅仅是您的数据。它不能只更新 var 以包含其他内容,它仍将是它返回给您的任何基础对象。
标签: javascript angularjs asynchronous firebase