当前位置: 首页 > 面试题库 >

如何在AngularFire 0.5.0中从。$ on('loaded')访问加载的数据

谈炳
2023-03-14
问题内容

我在使用AngularFire 0.5.0中的。$ on方法访问从Firebase加载的数据时遇到问题

在回调中,当我注销范围的内容时,数据在那里,但是当我尝试使用更深的数据时,我得到了undefined。也许我误会了您如何使用这种方法访问数据?

这是我的控制器:

.controller('AssetDetailCtrl',
  ['$scope', '$firebase', 'FBURL',
  function($scope, $firebase, FBURL) {
    var refAsset = new Firebase(FBURL + '/assets/' + $scope.assetId);
    $scope.asset = $firebase(refAsset);

    // when data is loaded check validity of the route
    $scope.asset.$on('loaded', function() {
      console.log($scope.asset); // complete with the asset data
      console.log($scope.asset.name); // undefined even though it appears in the above console log
    });
}])

因此,也许有更好的方法可以做到这一点。
为什么即使将日志记录到控制台也无法从示波器访问数据?

这是第一个console.log的结果

Object { $bind: function, $add: function, $save: function, $set: function, $remove: function…}
  $add: function (b,c){var d;return d="object"==typeof b?a._fRef.ref().push(a._parseObject(b),c):a._fRef.ref().push(b,c)}
  $bind: function (b,c){return a._bind(b,c)}
  $child: function (b){var c=new AngularFire(a._q,a._parse,a._timeout,a._fRef.ref().child(b));return c.construct()}
  $getIndex: function (){return angular.copy(a._index)}
  $on: function (b,c){switch(b){case"change":a._onChange.push(c);break;case"loaded":a._onLoaded.push(c);break;default:throw new Error("Invalid event type "+b+" specified")}}
  $remove: function (b){b?a._fRef.ref().child(b).remove():a._fRef.ref().remove()}
  $save: function (b){b?a._fRef.ref().child(b).set(a._parseObject(a._object[b])):a._fRef.ref().set(a._parseObject(a._object))}
  $set: function (b){a._fRef.ref().set(b)}
  asset_author: Object
  collections: Array[2]
  creator: "John Doe"
  desc: "a description of the asset"
  file: "http://lorempixel.com/400/200/sports/3/"
  filesize: "28kb"
  filetype: "jpg"
  name: "Cycling"
  release: "12/12/2013"
  tags: "tag1, tag3"
  type: "Photography"
  __proto__: Object

第二个console.log返回 undefined


问题答案:

我已经能够解决这个问题。
我不知道加载的事件传递了加载资产的原始数据,但在AngularFire文档中未记录。

它没有解释我使用console.log时遇到的奇怪行为,但确实可以解决问题。

.controller('AssetDetailCtrl',
  ['$scope', '$firebase', 'FBURL',
  function($scope, $firebase, FBURL) {
    var refAsset = new Firebase(FBURL + '/assets/' + $scope.assetId);
    $scope.asset = $firebase(refAsset);

    // when data is loaded check validity of the route
    $scope.asset.$on('loaded', function(value) {
      console.log(value); // data loaded from Firebase
      console.log(value.name); // subset of the returned value
    });
}])


 类似资料:
  • 问题内容: 这是我的一部分: This is the item reader: 这是Spring Batch在运行时所说的: 怎么了 在Spring 3.0中,我在哪里可以了解有关这些机制的更多信息? 问题答案: 如前所述,你的阅读器需要进行“逐步”调整。你可以通过注释完成此操作。如果你将该注释添加到阅读器,则它应该对你有用,如下所示: 该范围默认情况下不可用,但是如果你正在使用XML名称空间,则

  • 问题内容: 我正在尝试从D3中的CSV文件加载数据;我有以下代码: 如果我使用D3 v4,它可以正常工作,但是如果我切换到v5,它将不再起作用。有人可以向我解释如何修改代码以使其与D3 v5兼容吗? 问题答案: d3 v5使用访存API并返回要求以下代码的Promise。 万一将来人们想要v4。另一方面,d3v4使用XMLHttpRequest方法,并且不返回要求此代码的Promise csv加载

  • 目前,我尝试学习nestjs,因此我遵循官方(cat-)教程构建了一个基本的用户身份验证系统。 当您访问API以更改用户名或密码时,请求应检查用户是否为有效用户(从数据库读取用户)。为了存储用户,我已经有了mongodb连接。 我目前正在琢磨如何在警卫中获得数据库模块/访问权限。 防护正在工作,但只返回true,我尝试注入数据库模块,但没有成功。 使用findOne方法扩展UserService类

  • 问题内容: 我有以下用例。 我的React组件中加载了一些第三方来源的HTML: 在外部加载的HTML内,存在一个针对特定范围的click事件,该事件应调用存在于我的应用程序中的回调函数。 我该把 myCallback 函数放在哪里? 如果将其放在组件类中,则单击跨度时会收到以下错误,因为据我了解,该函数对外部加载的HTML不可见: Uncaught ReferenceError:在HTMLSpa

  • 问题内容: 我正在使用FFmpeg为Windows平台编写一个应用程序,它是golang包装器goav,但是我在理解如何使用C指针获取对其所指向的数据数组的访问方面遇到了麻烦。 我正在尝试获取存储在AVFrame类中的数据,并使用Go将其写入文件,最后使用OpenGl中的纹理使视频播放器具有出色的过渡效果。 我认为了解如何转换和访问C数据将使编码变得容易得多。 我已经删除了C代码的所有相关部分,包