我正在尝试获取$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(但仅限于我的计算机上)。
可能导致此行为的原因是什么?
答案 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);
});
}
}
}
}]);
此致