gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 22:28:59 25 4
gpt4 key购买 nike

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

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

这是我的 Controller :

.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

最佳答案

基于 Kato's answer here我已经能够解决这个问题。我不知道加载的事件传递了加载 Assets 的原始数据,它在 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
});
}])

关于angularjs - 你如何在 AngularFire 0.5.0 中从 .$on ('loaded' )访问加载的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20597947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com