Angularjs AngularFire$getRecord在页面刷新后返回null

Angularjs AngularFire$getRecord在页面刷新后返回null,angularjs,firebase,angular-ui-router,angularfire,Angularjs,Firebase,Angular Ui Router,Angularfire,我有一个问题,我不明白为什么会发生。 我的应用程序的一部分是一个使用AngularFire的博客。当访问单个博客文章时,我使用$getRecord(key)方法从Firebase检索数据。 通过UI路由器的$stateParams对象检索关键参数 我可以在我的post.single.html视图中显示数据,但是当我刷新时,数据消失,$getRecord(Key)返回null,而$stateParams的值是正确的。 代码如下: /*postcrl*/ "严格使用",; 有棱角的 .module(

我有一个问题,我不明白为什么会发生。 我的应用程序的一部分是一个使用
AngularFire
的博客。当访问单个博客文章时,我使用
$getRecord(key)
方法从Firebase检索数据。 通过UI路由器的
$stateParams
对象检索关键参数

我可以在我的
post.single.html
视图中显示数据,但是当我刷新时,数据消失,
$getRecord(Key)
返回null,而
$stateParams
的值是正确的。 代码如下:

/*postcrl*/
"严格使用",;
有棱角的
.module(“Meettery”)
.controller('postcrl'、['$scope'、'$stateparms'、'BlogFactory',函数($scope、$stateparms、BlogFactory){
$scope.data=BlogFactory.loadPost($stateParams.postId);
}]);
/*博客工厂*/
"严格使用",;
有棱角的
.module(“Meettery”)
.factory('BlogFactory',['$firebaseArray',函数($firebaseArray){
var postRef=新Firebase('https://firebase-forge/posts');
var postArray=$firebaseArray(postRef);
/***********************单负载***********************************/
var\u loadPost=函数(记录键){
var记录=postArray.$getRecord(记录键);
退货记录;
};
返回{
装货柱:_装货柱
}
}]);

{{data.title}
{{data.content}


从Firebase下载数据后,如果有人有线索…

请确保在调用$getRecord函数时解析了承诺,您可以在承诺上使用$loaded()

   angular
   .module('meetTerry')
   .factory('BlogFactory', ['$firebaseArray', '$rootScope', function ($firebaseArray, $rootScope) {

       var postRef = new Firebase('https://firebase-forge/posts');
       var postArray = $firebaseArray(postRef);
       var obj = $firebaseObject(postRef);  

       obj.$loaded().then(function() { 
          // Broadcast your post and catch up at any controller
          $rootScope.$broadcast('loadPost',postArray.$getRecord(recordKey));               
       });

   }); 
使用$scope.$broadcast将触发$scope下的事件。使用$scope.$on是我们监听这些事件的方式。现在,您可以通过捕获“loadPost”事件跨控制器使用它


从Firebase下载数据后,请确保在调用$getRecord函数时解析了承诺,您可以在承诺上使用$loaded()

   angular
   .module('meetTerry')
   .factory('BlogFactory', ['$firebaseArray', '$rootScope', function ($firebaseArray, $rootScope) {

       var postRef = new Firebase('https://firebase-forge/posts');
       var postArray = $firebaseArray(postRef);
       var obj = $firebaseObject(postRef);  

       obj.$loaded().then(function() { 
          // Broadcast your post and catch up at any controller
          $rootScope.$broadcast('loadPost',postArray.$getRecord(recordKey));               
       });

   }); 
使用$scope.$broadcast将触发$scope下的事件。使用$scope.$on是我们监听这些事件的方式。现在,您可以通过捕获“loadPost”事件跨控制器使用它


. (提示:它还没有加载)但是如果你已经有了帖子id,直接获取它,你不需要所有帖子的数组
$firebaseObject(postRef.child(recordKey))
感谢您的回答和帮助@Kato的帖子它现在工作得很好您是否使用了
$loaded()
?。(提示:它还没有加载)但是如果你已经有了帖子id,直接获取它,你不需要所有帖子的数组
$firebaseObject(postRef.child(recordKey))
感谢您的回答和@Kato的有用帖子,它现在工作得很好您是否使用了
$loaded()