Как я могу получить доступ к моей функции $ 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, но это не сработало.
Если вам понадобится childSnapshot.key
во втором вызове, вы должны получить к нему доступ в childSnapshot.key
вызове с обещанием:
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);
});
});
});
Обратите внимание, что это будет выполняться для каждой итерации, поскольку объект childSnaphot
находится в childSnaphot
forEach
$scope.key