Доступ к $ scope в другой функции

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
    нет, по какой-то причине он не определен и после запуска функции.
Показать ещё 7 комментариев
Теги:
firebase
ionic-framework
firebase-realtime-database

1 ответ

2
Лучший ответ

Если вам понадобится 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню