Firebase.on()与GET请求

时间:2015-03-09 05:37:08

标签: javascript angularjs rest angularjs-scope firebase

我正在按照教程创建一个用于角度的邮件客户端应用程序,我稍微偏离了sinatra建议实施firebase后端。 HTML使用ng-repeat angular指令列出控制器$scope.email中的电子邮件。当我将$http方法与get请求一起使用时(正如我后面的教程所做的那样),当get请求返回并且一切似乎都正常时,$scope.email会更新。但是,当我尝试使用fb.on()方法时,我的视图不会更新。我知道fb.on是异步的,它确实似乎更新了$scope.email变量,但不知何故该指令没有得到更新。

以下作品:

app.controller('MailListingController',function($scope, $http){
    $http({
    method:'GET',
    url:'https://XXXXX.firebaseio.com/email.json'
}).success(function(data,status,headers){
        console.log(data);
        $scope.email=data;
        console.log($scope.email);

}).error(function(data,status,headers){
    console.log('error');
});

但这并不是:

app.controller('MailListingController',function($scope, $http){
    fb = new Firebase("https://XXXXX.firebaseio.com/email");
    fb.on("value",function(snapshot){
        console.log(snapshot.val());
        $scope.email=snapshot.val();
        console.log($scope.email);
        //console shows $scope.email was successfully set

},  function(errorObject){
    console.log("the read failed: "+errorObject.code);
});

我知道Firebase有一个Angularfire教程,它可能会有不同的做法,但我不明白第二种方法有什么问题。似乎异步性或范围界定的任何问题都应该适用于任何一种方法,所以我很困惑。有谁知道为什么这不起作用?

谢谢!

0 个答案:

没有答案