2017-06-21 22 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

相關問題