首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何导航从AngularFire返回的对象?

如何导航从AngularFire返回的对象?
EN

Stack Overflow用户
提问于 2016-01-21 19:31:12
回答 1查看 131关注 0票数 1

当我运行以下Firebase查询时:

代码语言:javascript
复制
    var ref = new Firebase('https://<myfirebase>.firebaseio.com/companies/endo/status');
    data = $firebaseObject(ref);
    console.dir(data);

我得到了以下目标:

代码语言:javascript
复制
d
$$conf: Object
$id: "status"
$priority: null
Active, not recruiting: 39
Approved for marketing: 1
Completed: 339
Enrolling by invitation: 10
Not yet recruiting: 23
Recruiting: 128
Suspended: 3
Terminated: 38
Unknown: 74
Withdrawn: 15
__proto__: Object

我试图访问值339的“已完成”元素。但是,console.log(data['Completed'])返回未定义的。怎么啦?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-21 19:49:49

$firebaseObject从空对象开始,但是当数据从Firebase数据库下载后,它将填充该对象。

一开始,你没有看到任何东西,因为数据还没有下载。您的console.log()在创建$firebaseObject后运行纳秒。数据被下载后毫秒。

因此,您可能会问,如果数据一开始不存在,如何处理?

您可以做的是将$firebaseObject附加到$scope。然后将其绑定到模板中。当数据下载的角度$digest循环运行,并刷新您的模板。

您的控制器将如下所示:

代码语言:javascript
复制
app.controller('MyCtrl', function($scope, $firebaseObject) {
   var ref = new Firebase('https://<myfirebase>.firebaseio.com/companies/endo/status');
   $scope.data = $firebaseObject(ref);
});

您的模板将如下所示:

代码语言:javascript
复制
<div>Did you do it? {{ data.Completed }}</div>

还有另一种方式,它需要更多的设置,但这是我个人的最爱。您也可以使用路由器将数据解析到控制器中。

代码语言:javascript
复制
angular.module('app', ['firebase'])
  .constant('FirebaseUrl', '<my-firebase-app>')
  .service('rootRef', ['FirebaseUrl', Firebase])
  .controller('MyCtrl', MyController)
  .config(ApplicationConfig);

function ApplicationConfig($routeProvider) {
   $routeProvider.when('/', {
      controller: 'MyCtrl',
      template: 'view.html',
      resolve: { 
        data: function ($firebaseObject, rootRef) {
          var ref = rootRef.child('companies/endo/status');
           // a promise for the downloaded data
          return $firebaseObject(ref).$loaded();
        }
      }
   });
}

function MyController($scope, data) {
  $scope.data = data;
  console.log(data.Completed); // will work because the data is downloaded
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34932687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档