Получить исходное имя объекта из объекта firebase внутри ng-repeat

#angularjs #json #ionic-framework #firebase-realtime-database #ng-repeat

#angularjs #json #ionic-framework #firebase-база данных в реальном времени #angularjs-ng-repeat

Вопрос:

Я получаю из firebase объект со следующим кодом:

     var ref = firebase.database().ref().child("categories");
                ref.orderByChild("status")
                .equalTo('featured')
                .on('value', function(snap) {
                console.log('Categories in range', snap.val());
                $scope.categories = snap.val();
                })
  

Объект, который я получаю, содержит пару объектов с данными, которые выглядят как мой пример здесь:

Пример объекта из firebase

Результаты, которые я использую в своем представлении шаблона с помощью ng-repeat.

 <ul class="list">
    <li ng-repeat="(category_id, category) in categories | toArray | orderBy:'position'">
      <div style="background-image: url({{category.images[0].src}});" ng-click="category_action(category_id)">{{category.name}}
      </div>
    </li>
  

Теперь моя проблема в том, что я хочу вернуть исходное имя объекта с помощью ng-click. Я попытался использовать решение (ключ, значение) из angular для ng-repeat, но я не получаю обратно исходное имя объекта, а только номер индекса, такой как 0,1,2,3 и т.д.

Что мне нужно, так это исходное имя, как в этом примере KU8JfAZRCsPJy9uOMqm. Если я получу обратно только номер индекса (0,1,2), как я могу узнать в моем контроллере, какое имя объекта было оригинальным? Например, $scope.categories.???

Заранее благодарю вас за помощь, я провел исследование, но нашел только людей с такой же проблемой, но без рабочего решения.

PS: я использую firebase 3.x и angular 1.x

Комментарии:

1. category_id должен предоставить вам «исходное имя», которое вы запрашиваете. jsfiddle.net/f24LL8e1

2. вы правы! Я только что протестировал ваш пример, и он сработал. поскольку моя версия не работала, я продолжал проверять и понял, что проблема заключается в дополнительном фильтре «toArray» из angular-toArrayFilter . С этим фильтром в середине я получаю только 0,1,2,3, но я не видел, чтобы этот фильтр также принимал исходный ключ и присоединял его как свойство к объекту, чтобы использовать его снова. Спасибо за вашу помощь, теперь отлично работает!