Javascript 如何将返回的Firebase数据设置为AngularJS中的$scope变量?

Javascript 如何将返回的Firebase数据设置为AngularJS中的$scope变量?,javascript,angularjs,firebase,firebase-realtime-database,angularfire,Javascript,Angularjs,Firebase,Firebase Realtime Database,Angularfire,我想做什么: 我想在我的主页上输出book节点中的所有书籍。我需要的是一个包含book节点中所有书籍的对象数组,这样我就可以使用AngularJs中的ng repeat指令循环它们。在下面的代码中,当我控制台记录数据时,我得到一个objects对象,它不能与ng repeat一起使用。我遇到的另一个问题是,当我试图将$scope.allBooks变量输出到页面上时,什么也没有出现。有人能帮我吗 使用Javascript SDK而不是Angularfire 如果您不想使用angularfire,

我想做什么:

我想在我的主页上输出book节点中的所有书籍。我需要的是一个包含book节点中所有书籍的对象数组,这样我就可以使用AngularJs中的ng repeat指令循环它们。在下面的代码中,当我控制台记录数据时,我得到一个objects对象,它不能与ng repeat一起使用。我遇到的另一个问题是,当我试图将$scope.allBooks变量输出到页面上时,什么也没有出现。有人能帮我吗

使用Javascript SDK而不是Angularfire


如果您不想使用angularfire,则需要让angularfire知道如何运行更新

// Main Controller
firebase.database().ref('books').on('value', function(snapshot) {
    var data = snapshot.val();

    $scope.allBooks = data;
    console.log(data);
    $scope.$apply();
});

只需添加
$scope.$apply()
即可让angular知道如何更新。

如果不想使用angularfire,则需要让angular知道如何运行更新

// Main Controller
firebase.database().ref('books').on('value', function(snapshot) {
    var data = snapshot.val();

    $scope.allBooks = data;
    console.log(data);
    $scope.$apply();
});

只需添加
$scope.$apply()
就可以让angular知道如何更新。

您完全可以在具有正确语法的对象上使用具有
ng repeat
的对象。这一点在报告中作了解释

例如:

<div ng-repeat="(key, value) in myObj"> ... </div>

您当然可以在具有正确语法的对象上使用带有
ng repeat
的对象。这一点在报告中作了解释

例如:

<div ng-repeat="(key, value) in myObj"> ... </div>

非常感谢@vzsgThanks很多@vzsg