Http-запрос не загружается при загрузке углового обзора

0

Я загружаю данные из Firebase, но только каждое время secend или около того, данные отображаются в представлении, но также только если я обновляюсь. Иногда даже когда я обновляю кулак во второй раз. Когда я переключаю представления в приложении, данные вообще не отображаются.

Какая моя ошибка?

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

  $scope.init = function() {

  var ref = firebase.database().ref("Entries");
  ref.once("value")
    .then(function(snapshot) {
      $scope.tmp = snapshot.val();
      $scope.data = $scope.tmp.kategorienamen

    });

  }


})

HTML

<ion-view ng-init="init()">
    <ion-header-bar align-title="center" class="bar-top no-bgColor">
  <h1 class="title-top">Kategorien</h1>
</ion-header-bar>
<ion-content overflow-scroll="true" class="has-header has-footer bg" scroll="true">

    <div ng-repeat="cat in data" class="animated lightSpeedIn">
      <a nav-transition="none"><div ng-style="{'background': 'url(' + cat.bgurl + ')','background-repeat': 'no-repeat','background-size': 'cover','display': 'block','width': '100%','height': '25vh' }" class="bgcat center">
        <div class="inner">
          <h1>{{cat}}</h1>
          <h4>{{}}</h4>
        </div>
      </div></a>
    </div>
</ion-content>
  • 1
    Проблема в том, что вы перезаписываете наблюдаемую переменную. Вы можете либо использовать scope.apply для принудительного обновления представления, либо использовать директиву, чтобы он возвращал некоторое содержимое после выполнения запроса. Любой из этих методов не является чистым решением, так как лучше всего было бы использовать метод запроса native angular, чтобы он выполнял рендеринг после того, как он был выполнен самостоятельно.
Теги:
firebase
ionic-framework
firebase-realtime-database

1 ответ

0

Есть много способов кошки кошки, но вот один, и вы должны прочитать о других из них

$scope.data = ref.once("value");

Изменение: Как было предложено.once возвращает обещание уже https://www.firebase.com/docs/web/api/query/once.html

  • 0
    Почти: ref.once() возвращает обещание, поэтому правильной формой является $scope.data = ref.once("value"); ;
  • 0
    Спасибо! Не могли бы вы поделиться ссылкой?

Ещё вопросы

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