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

Chr*_*ill 1 javascript angularjs firebase angularfire firebase-realtime-database

我想做什么:

我想在我的主页上输出书籍节点中的所有书籍.我需要的是一个包含书籍节点中所有书籍的对象数组,以便我可以使用AngularJs中的ng-repeat指令循环遍历它们.在下面的代码中,当我控制台记录数据时,我得到一个对象的对象,它不能与ng-repeat一起使用.我遇到的另一个问题是当我尝试将$ scope.allBooks变量输出到页面时,没有任何内容出现.谁能帮我这个?

使用Javascript SDK而非Angularfire https://firebase.google.com/docs/

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

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


// Book Node in Firebase
books : {
    id : {
        title: 'The Hunger Games',
        author: 'Suzanne'
    },
    id : {
        title: 'Harry Potter and the Order of the Phoenix',
        author: 'J.K.'
    }
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*erg 5

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

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

    $scope.allBooks = data;
    console.log(data);
    $scope.$apply();
});
Run Code Online (Sandbox Code Playgroud)

只需添加$scope.$apply()让角度知道更新.