我现在坚持了几天。
我有解决方案的路线,看起来像这样:
.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应用程序时失败。
任何想法都表示赞赏。
答案 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