#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();
})
Объект, который я получаю, содержит пару объектов с данными, которые выглядят как мой пример здесь:
Результаты, которые я использую в своем представлении шаблона с помощью 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, но я не видел, чтобы этот фильтр также принимал исходный ключ и присоединял его как свойство к объекту, чтобы использовать его снова. Спасибо за вашу помощь, теперь отлично работает!