$ firebase承诺在phonegap app中解决

时间:2014-02-20 16:39:43

标签: firebase angularfire

我现在坚持了几天。

我有解决方案的路线,看起来像这样:

.when('/list/',{
   controller : 'list',
      templateUrl : 'template/list.stache',
      resolve : {
        list : function($q,$firebase){
          var d = $q.defer(),
              ref = new Firebase(_config.url+'/list/');

         ref.once('value', function(s){
            if(s.val() == null){
              d.reject('Object not found');
            }

            d.resolve($firebase(ref));
         });

            return d.promise;
        }
   }

})

它适用于任何浏览器,由于某些原因它在Android应用程序中失败(使用phonegap),它正确加载数据,但是当你尝试保存它时(使用$ save()),数据在本地更新但无法做到太远了。

测试了一些理论,尝试在控制器中调用$ firebase,使用类似的东西:

    $scope.fb = $firebase(new Firebase(_config.url+'/list/'))
    $scope.fb.$on('loaded', function(d){
        $scope.fb[$scope.fb.$getIndex()[0]].test = 'AAAAAA!'
        $scope.fb.$save()

    })

以上工作应该如此,所以我认为它与承诺有关。

有人会有任何想法吗?

编辑---

仍然在努力弄清楚这个问题,但能够将其缩小以解决问题:

.when('/list/',{
  controller : function(){
     new Firebase('https://XXX.firebaseio.com/test/').push('Hey!');
  },
  templateUrl : 'template/list.stache',
  resolve : {
    list : function($q,$firebase){
      var d = $q.defer(),
          ref = new Firebase(_config.url+'/list/');

     ref.once('value', function(s){
        if(s.val() == null){
          d.reject('Object not found');
        }

        d.resolve($firebase(ref));
     });

        return d.promise;
    }
 }

})

失败了。但是:

.when('/list/',{
  controller : function(){
     new Firebase('https://XXX.firebaseio.com/test/').push('Hey!');
  },
  templateUrl : 'template/list.stache'
})

按预期工作。

请注意,这两种方法在浏览器中都能正常工作(在firefox和chrome上测试)。它只在使用phonegap编译到Android应用程序时失败。

任何想法都表示赞赏。

1 个答案:

答案 0 :(得分:-1)

我有同样的事情。连接丢失了。

使用功能Firebase.goOffline();Firebase.goOnline();。这允许您手动控制客户端连接。

示例:

var usersRef = new Firebase('https://samplechat.firebaseio-demo.com/users');
Firebase.goOffline(); // All Firebase instances are disconnected
Firebase.goOnline(); // All Firebase instances automatically reconnect

Link for reference