2017-06-21 19 views
0

我有一个应用程序,我试图监视控制器变量中的更改并将其保存到firebase,如果发生任何更改(即3路绑定)。

service.js

 var ref = firebase.database().ref('checklists').orderByChild('checklistName').equalTo('Sample Firebase Sumant'); 
       var obj = $firebaseObject(ref); 

       obj.$loaded().then(function() { 
        var key = Object.keys(obj); 
        var treeRef = firebase.database().ref('checklists/' + key[4] + '/tree'); 
        fullTreeCache = $firebaseArray(treeRef); 
        fullTreeCache.$loaded().then(function() { 
         compressedTree = clipChildren(fullTreeCache); 
         console.log(compressedTree); 
         promise.resolve(raw ? fullTreeCache : compressedTree); 
        }); 

controller.js

vm.firebaseData =checklistTreeService.getFullTree(); 
     $scope.$watch(function() { 
return vm.firebaseData; 
},function() { 
vm.firebaseData.$save($scope,vm.firebaseData); 
}, true); 

$保存语句执行的时候我换一块数据,没有任何控制台错误,但它没有得到保存到火力实时数据库。如果我的方法有问题,请帮助我。

回答

0

您可以通过使用.then语法捕获错误来记录错误。像这样:

$scope.yourFunc = function() { 
    list.$save(recordOrIndex) 
      .then(function(){ 
       // save successful 
      }, function(error){ 
       console.log(error); 
      }); 
}; 

我相信你将太多的参数传递给基于文档的$ save()。您必须通过“修改”记录或索引。如果您还没有阅读$ firebaseArrays技术上只读的文档,那么您应该这样做。

https://github.com/firebase/angularfire/blob/master/docs/reference.md#saverecordorindex

相关问题