角火:Return $值
AngularFire: Return $value
我正在尝试将我的 service.title
记录到控制台,但它一直将它作为一个奇怪的对象传回。
.factory('service', function($firebase, FBURL, $routeParams) {
var ref = new Firebase(FBURL + "services/" + $routeParams.serviceId);
var title = $firebase(ref.child('title')).$asObject();
return {
id: $routeParams.serviceId,
title: title
}
})
.controller('ServiceController', function ($scope, $firebase, service, $routeParams, FBURL) {
$scope.service = service;
console.log($scope.service.title);
})
这是我从控制台返回的内容:
我正在尝试在控制台日志中检索 $value
。任何人都可以帮助解释我可能做错了什么吗?
提前致谢!
肯定会向您展示 object
var title = $firebase(ref.child('title')).$asObject();
你的标题是object
所以如果你 console.log 它会打印 object。
如果你想要价值使用 console.log($scope.service.title.$value)
你所说的 "a weird object" 只是一个 AngularFire object。鉴于您这样分配它,这几乎是意料之中的:
var title = $firebase(ref.child('title')).$asObject();
当你在一个简单的值上调用 $asObject 时,AngularFire 将真实值保存在 $value
属性.
中
当然,该值是从 Firebase 服务器异步检索的,因此在您设置 ref 和调用 $asObject
后不会立即可用。所以这行不通:
var ref = new Firebase(FBURL + "services/" + $routeParams.serviceId);
var title = $firebase(ref.child('title')).$asObject();
console.log(title.$value);
相反,您需要在它可用时做出响应,对此 AngularFore 有一些不错的承诺:
var ref = new Firebase(FBURL + "services/" + $routeParams.serviceId);
var title = $firebase(ref.child('title')).$asObject();
title.$loaded().then(function(title) {
console.log(title.$value);
});
如果你想在自己的代码中处理数据,你只需要处理这个promise。如果您只是想将标题绑定到 AngularJS 视图(这是 AngularFire 的用途),该视图将自动更新。好吧......不是真的自动,它会听取类似的承诺来解决。但在那种情况下,您不必在自己的代码中处理它。
我正在尝试将我的 service.title
记录到控制台,但它一直将它作为一个奇怪的对象传回。
.factory('service', function($firebase, FBURL, $routeParams) {
var ref = new Firebase(FBURL + "services/" + $routeParams.serviceId);
var title = $firebase(ref.child('title')).$asObject();
return {
id: $routeParams.serviceId,
title: title
}
})
.controller('ServiceController', function ($scope, $firebase, service, $routeParams, FBURL) {
$scope.service = service;
console.log($scope.service.title);
})
这是我从控制台返回的内容:
$value
。任何人都可以帮助解释我可能做错了什么吗?
提前致谢!
肯定会向您展示 object var title = $firebase(ref.child('title')).$asObject();
你的标题是object
所以如果你 console.log 它会打印 object。 如果你想要价值使用 console.log($scope.service.title.$value)
你所说的 "a weird object" 只是一个 AngularFire object。鉴于您这样分配它,这几乎是意料之中的:
var title = $firebase(ref.child('title')).$asObject();
当你在一个简单的值上调用 $asObject 时,AngularFire 将真实值保存在 $value
属性.
当然,该值是从 Firebase 服务器异步检索的,因此在您设置 ref 和调用 $asObject
后不会立即可用。所以这行不通:
var ref = new Firebase(FBURL + "services/" + $routeParams.serviceId);
var title = $firebase(ref.child('title')).$asObject();
console.log(title.$value);
相反,您需要在它可用时做出响应,对此 AngularFore 有一些不错的承诺:
var ref = new Firebase(FBURL + "services/" + $routeParams.serviceId);
var title = $firebase(ref.child('title')).$asObject();
title.$loaded().then(function(title) {
console.log(title.$value);
});
如果你想在自己的代码中处理数据,你只需要处理这个promise。如果您只是想将标题绑定到 AngularJS 视图(这是 AngularFire 的用途),该视图将自动更新。好吧......不是真的自动,它会听取类似的承诺来解决。但在那种情况下,您不必在自己的代码中处理它。