Как получить длину повторения ng, используя innerItem?

0

У меня есть эта проблема... Я использую ng-repeat с внутренним, чтобы получить данные внутри дочернего элемента, это работает отлично, но я не могу найти метод для получения длины ng-repeat. Мне нужно получить количество комментариев.

Как получить длину ng-repeat с помощью inner?:

   js:
    angular.module('myApp.Profile', ['ngRoute', 'firebase'])
   .config(['$routeProvider', function($routeProvider) {
   $routeProvider.when('/Profile', {
   templateUrl: 'Profile/Profile.html',
   controller: 'ProfileCtrl'
   });
   }])

.controller('ProfileCtrl', ['$scope', '$firebase', '$firebaseArray', '$firebaseObject', function ($scope, $firebase, $firebaseArray, $firebaseObject) {

   var firebaseRefs = firebase.database().ref('PostUsers/');
   $scope.PostList = $firebaseArray(firebaseRefs);

   }]);


   html:
  <body ng-controller="ProfileCtrl">
  <div ng-repeat="PostList in PostList"> 

  <p>Author: {{PostList.userAuthor}}</p> 
  <p>Comments: {{PostList.post}}</p> 

  <div ng-repeat="innerPostList in PostList.PostedComments">

   <p>Author: {{innerPostList.username}}</p>
    <p>Comments:{{innerPostList.comments}}</p> 

 </div> 
</div> 

 <h4>Publications number: {{PostList.length}}</h4>
<h4>Comments number: {{????.length}}</h4> 

</body>

Я использую Firebase:

Изображение 174551

ПРИМЕЧАНИЕ: {{PostList.PostedComments.length}} не работает...

эта ошибка появляется, когда я пытаюсь это сделать в контроллере: angular.js: 13920 TypeError: Невозможно прочитать свойство "длина" неопределенного. Это то, что я сделал:

var value = PostList.PostedComments.length;

console.log("значение комментариев:" + значение ");

но когда я пробую это, он отлично работает:

var value = PostList.length;

console.log("значение комментариев:" + значение ");

  • 0
    примечание: это firebase ref: js: var firebaseRefs = firebase.database (). ref ('PostUsers /'); $ scope.PostList = $ firebaseArray (firebaseRefs);
  • 1
    Почему вы не можете просто сделать <h4>{{PostList.PostedComments.length}}</h4> ?
Теги:
firebase-realtime-database

1 ответ

1

Если вы можете ng-repeat на PostList.PostedComments, нет причин, по которым вы не можете просто взять длину из нее напрямую.

<div ng-repeat="innerPostList in PostList.PostedComments">
   <p>{{innerPostList.comments}}</p>
</div>

<!-- length -->
<h4>{{PostList.PostedComments.length}}</h4>

EDIT: Я просто сделал некоторые исследования по firebase, и кажется, что ваш $ firebaseArray() возвращает обеимподобную оболочку для фактических данных/результатов, поэтому вероятно, почему у нее нет прямых свойств, которые вы хотите. Также возможно, что сетевой запрос/обещание еще не разрешен, когда вы его проверяете.

Вместо var firebaseRefs = firebase.database().ref('PostUsers/'); $scope.PostList = $firebaseArray(firebaseRefs); var firebaseRefs = firebase.database().ref('PostUsers/'); $scope.PostList = $firebaseArray(firebaseRefs);

Попробуйте что-то вроде этого:

firebase.database().ref('PostUsers/').$loaded().then(function(data) {
   $scope.PostList = data;
});

Осмотрите объект данных и убедитесь, что он имеет то, что вы хотите.

Полезные ссылки:

  • 0
    {{PostList.PostedComments.length}} не работает ...
  • 0
    технически это должно работать. Что происходит, когда вы фиксируете длину в контроллере и делаете для этого console.log. Вы видите ошибку?
Показать ещё 5 комментариев

Ещё вопросы

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