Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase快照列表未定义_Javascript_Angularjs_Firebase - Fatal编程技术网

Javascript Firebase快照列表未定义

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

我对Firebase Api和列表快照列表的
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)