2016-09-13 62 views
2

我在我的角度,应用火力地堡。一旦():用成功和失败回调

$scope.retrieveProjectData = function() { 
     $scope.projectNumberNoChange = false; 

     // Only retrieve Data if the ProjectNumber changed 
     if (currentlySelectedProjectNumber != $scope.feedback.projectNumber.content) { 
      currentlySelectedProjectNumber = $scope.feedback.projectNumber.content; 

      // Go to database-reference based on the projectNumber 
      var projectsRef = firebaseDatabaseRef.child("projects"); 
      var currentChild = projectsRef.child(currentlySelectedProjectNumber); 

      // retrieve data once and fill $scope.feedback 
      currentChild.once("value", 
       // If the project is found 
       function (dataSnapshot) { 
        // Fill selectedProject and hand over to writeDataFromSelectedProject() 
        var selectedProject = dataSnapshot.val(); 

        // Fill $scope.feedback 
        writeDataFromSelectedProject(selectedProject); 
       }, 

       // If no data is found 
       function() { 
        console.log("No data found"); 
       }); 
     } 
     // If the projectNumber didn't change, the projectNumberNoChangeMessage will be shown 
     else { 
      $scope.projectNumberNoChange = true; 
     } 
    }; 

用户有关于他的项目数(比如加载一些数据的可能性以下功能:名称,电子邮件,电话),以使用户填写表格的速度更快。

在部分:

currentChild.once("value", 
       // If the project is found 
       function (dataSnapshot) { 
        // Fill selectedProject and hand over to writeDataFromSelectedProject() 
        var selectedProject = dataSnapshot.val(); 

        // Fill $scope.feedback 
        writeDataFromSelectedProject(selectedProject); 
       }, 

       // If no data is found 
       function() { 
        console.log("No data found"); 
       }); 

只有第一个回调函数被调用,即使projectNumber没有被发现。如何使用所述的“failureCallbackOrContext”?

感谢您花时间!

+1

基于文档,我认为错误回调是在发生错误时调用的,更确切的说如果你的客户端没有读取数据的权限**这个回调函数将传递一个Error对象,指出为什么失败发生。否则,如果你可以阅读,但你的查询不返回任何对象,它不被视为失败。 –

回答

1

问题解决了。我刚刚检查了dataSnapshot.val()方法,以便让一个对象或null!