2016-07-31 5 views
0

$ scope.keyにアクセスするにはどうしたらいいですか?

.controller('CatsCtrl', function($scope, $state, $http) { 

     var query = firebase.database().ref().orderByKey(); 
     query.once("value") 
     .then(function(snapshot) { 
      snapshot.forEach(function(childSnapshot) { 
      $scope.key = childSnapshot.key; 
      // I need this value 
      $scope.childData = childSnapshot.val(); 

      $scope.data = $scope.childData.Category; 

      console.log($scope.key); 
      }); 
     }); 

     console.log($scope.key); 
     // returns undefined 

     var ref = firebase.database().ref($scope.key); 
      ref.once("value") 
      .then(function(snapshot) { 
       console.log(snapshot.val()); 
       var name = snapshot.child("Category").val(); 
       console.log(name); 
      }); 
    }) 

私は$ scope.applyで試しましたが、これはうまくいきませんでした。

+0

関数が実行された後、 '$ scope.key' –

+0

にアクセスすることができます。何らかの理由で、関数の実行後も定義されていません。 – olivier

+0

完全なコントローラコードを教えてください –

答えて

2

包みなさい、あなたの2番目の呼び出しでchildSnapshot.keyを必要とする、あなたは約束の成功コールバックでそれにアクセスする必要がありますchildSnaphotオブジェクトはforEachコールバック

であるので、これは反復ごとに実行されることを

query.once("value") 
    .then(function(snapshot) { 
     snapshot.forEach(function(childSnapshot) { 
     $scope.childData = childSnapshot.val(); 

     $scope.data = $scope.childData.Category; 

     var ref = firebase.database().ref(childSnapshot.key); 
     ref.once("value") 
      .then(function(snapshot) { 
      console.log(snapshot.val()); 
      var name = snapshot.child("Category").val(); 
      console.log(name); 
     }); 
     }); 
    }); 

注意

関連する問題