2017-06-21 13 views
0

コントローラ変数の変更を監視し、変更があれば(つまり3方向バインディング)、firebaseに保存しようとしているアプリケーションがあります。

 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); 

$

service.jsは声明を保存私は任意のコンソールエラーなしでデータの一部を変更したときに実行されているが、それはfirebaseリアルタイムのデータベースに保存されてばかりいません。私のアプローチに何か問題がある場合は、私を助けてください。

答えて

0

エラーを.then構文でキャッチしてログに記録できます。このように:

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

私はあなたがドキュメントに基づいて$ save()にあまりにも多くの引数を渡していると思います。 「変更された」レコードまたはインデックスを渡す必要があります。もしあなたが$ firebaseArraysのドキュメントを読んでいないのであれば、techincally read-onlyです。

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

関連する問題