$ firebaseArray未返回预期值

时间:2015-04-08 12:44:06

标签: angularjs firebase angularfire

我正在尝试获取$firebaseArray而不是我期望的数组,我得到的数组/对象为length 0。该对象包含$$added等属性},$error$getKey等,但没有我期望的数据。

最奇怪的是,这个完全相同的代码在运行相同代码的另一台计算机上正常运行。

这是我的代码(省略了相关部分):

angular.module('myApp.services').factory('Props', ['$rootScope', '$firebaseArray', 'Refs', function($rootScope, $firebaseArray, Refs) {
  var service = {
    // initialized below
    user: null,

    init: function(user) {
      this.user = user;
      if (user) {
        this.user.feed = $firebaseArray(Refs.feed(user.email));
        $firebaseArray(Refs.props).$loaded(function(props) {
          this.user.props = props;
          console.log(props);
        });
      }
    }
  }
}]);

当我ng-repeat超过this.user.props时,它是空白的(但仅限于我的计算机上)。当我console.log(props)时,它的length为0(但仅限于我的计算机上)。

可能导致此行为的原因是什么?

1 个答案:

答案 0 :(得分:0)

我对您的错误的假设如下:

this.user.props = props;

我认为这种情况正在发生,因为你包括this,这并不意味着你现在在回调函数内部是一样的。

您可能想在此处更改一些内容。您可能不想调用函数参数user,而是调用别的东西,否则会引起很多混淆。

让我知道这样的事情是否有效:

angular.module('myApp.services').factory('Props', ['$rootScope', '$firebaseArray', 'Refs', function($rootScope, $firebaseArray, Refs) {
    var service = {
        // initialized below
        user: null,

        init: function(u) {
            this.user = u;
            if(this.user) {
                this.user.feed = $firebaseArray(Refs.feed(this.user.email));
                $firebaseArray(Refs.props).$loaded(function(props) {
                    user.props = props;
                    console.log(props);
                });
            }
        }
    }
}]);

此致