Javascript Firebase快照列表未定义
我对Firebase Api和列表快照列表的Javascript Firebase快照列表未定义,javascript,angularjs,firebase,Javascript,Angularjs,Firebase,我对Firebase Api和列表快照列表的ref.on()方法有一个问题。看: 客房工厂: .factory('Rooms', function ($firebaseObject, ObjectFactory) { var ref = new Firebase(firebaseUrl + '/rooms'); var onComplete = function (error) { if (error) { console.log('D
ref.on()
方法有一个问题。看:
客房工厂:
.factory('Rooms', function ($firebaseObject, ObjectFactory) {
var ref = new Firebase(firebaseUrl + '/rooms');
var onComplete = function (error) {
if (error) {
console.log('Data could not be saved: ', error);
}
else {
console.log('Data saved successfully!');
}
};
return {
all: function () {
ref.on("value", function(snapshot) {
return snapshot.val();
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
},
.controller('RoomsCtrl', function ($scope, Rooms, $state) {
var rooms = Rooms.all();
console.log('All Rooms:', rooms);
console.log('Rooms length:', rooms);
All Rooms: undefined
Rooms length: undefined
控制器:
.factory('Rooms', function ($firebaseObject, ObjectFactory) {
var ref = new Firebase(firebaseUrl + '/rooms');
var onComplete = function (error) {
if (error) {
console.log('Data could not be saved: ', error);
}
else {
console.log('Data saved successfully!');
}
};
return {
all: function () {
ref.on("value", function(snapshot) {
return snapshot.val();
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
},
.controller('RoomsCtrl', function ($scope, Rooms, $state) {
var rooms = Rooms.all();
console.log('All Rooms:', rooms);
console.log('Rooms length:', rooms);
All Rooms: undefined
Rooms length: undefined
输出:
.factory('Rooms', function ($firebaseObject, ObjectFactory) {
var ref = new Firebase(firebaseUrl + '/rooms');
var onComplete = function (error) {
if (error) {
console.log('Data could not be saved: ', error);
}
else {
console.log('Data saved successfully!');
}
};
return {
all: function () {
ref.on("value", function(snapshot) {
return snapshot.val();
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
},
.controller('RoomsCtrl', function ($scope, Rooms, $state) {
var rooms = Rooms.all();
console.log('All Rooms:', rooms);
console.log('Rooms length:', rooms);
All Rooms: undefined
Rooms length: undefined
或:
在我的房间中添加了$scope
,并且:
all: function () {
$scope.result = {};
ref.on("value", function(snapshot) {
$scope.result = snapshot.val();
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
return $scope.result;
},
但问题是continuos未定义
,出现了新问题:
错误:[$injector:unpr]未知提供程序:$scopeProvider您的代码有很多问题。首先,Rooms.all()实际上不返回任何内容。其次,Firebase调用是异步的,所以您需要使用AngularFire、$q,或者将函数包装为$Timeout
下面是一个使用$firebaseArray的示例
.factory('Rooms', function ($firebaseArray) {
var ref = new Firebase(firebaseUrl + '/rooms');
return {
all: function () {
return $firebaseArray(ref);
},
}
})
.controller('RoomsCtrl', function ($scope, Rooms, $state) {
var $scope.rooms = Rooms.all();
});
通过将rooms
绑定到范围,您可以在视图中看到输出。但是,如果您真的想使用console.log
,则需要在下载数据后使用来记录。问题是我需要将factory与controller一起使用,而firebase数据没有为我过滤。$loaded时也没有。使用工厂和snapshot.val()的输出:所有房间:匿名(snapshot)