Я получаю несколько объектов после сравнения ответа api с сегодняшней датой:

function taffy() {
  var d = new Date();
  $scope.day = d.getDate();
  $scope.month = d.getMonth() + 1;
  $scope.year = d.getFullYear();
  $scope.today = $scope.year + "-" + $scope.month + "-" + $scope.day + "T00:00:00";
}

function getBackAll() {
  $http.get('api/Invoice?')
    .then(function(data) {
      $scope.amadeus = data.data.Response;

      for (var i = 0; i < $scope.amadeus.length; i++) {
        if ($scope.amadeus[i].ProgramPayDate === $scope.today && $scope.amadeus[i].StatusId === 3) {
          $scope.viroba = $scope.amadeus[i];
          //console.log($scope.viroba);
        }
      };
      //console.log($scope.amadeus);
    });
}

Ответ - количество n объектов. Я хочу показать информацию в моем представлении html, но не могу. Раньше я спрашивал, и кто-то сказал мне, что мне нужно преобразовать объекты в массив, но то, что я нашел в Интернете, для меня не очень полезно.

Скажем, у меня на консоли следующий ответ:

{id: 1, name: "Arthur", nickname: "mercury"}
{id: 2, name: "Chuck", nickname: "lemmy"}

Что я могу сделать, чтобы получить информацию и отобразить ее в таблице в представлении html?

<table align="center">
    <thead>
    <tr>
        <th>Id</th>
        <th>Name</th>
        <th>Nickname</th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <th>{{id}}</th>
        <th>{{name}}</th>
        <th>{{nickname}}</th>
    </tr>
    </tbody>
</table>

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

Кто-нибудь может мне помочь, пожалуйста?

Заранее спасибо.

0
Chuck Villavicencio 27 Ноя 2017 в 10:07

1 ответ

Лучший ответ

Вы можете сохранить список объектов в массиве, который, предположим, на данный момент равен users. users будет выглядеть примерно так

users = [{id: 1, name: "Arthur", nickname: "mercury"},
           {id: 2, name: "Chuck", nickname: "lemmy"}]

В вашем коде попробуйте заполнить amadeus[i] массив users, как показано ниже

function getBackAll() {
  $scope.users = []; // Or initialise this wherever logical
  $http.get('api/Invoice?')
    .then(function(data) {
      $scope.amadeus = data.data.Response;

      for (var i = 0; i < $scope.amadeus.length; i++) {
        if ($scope.amadeus[i].ProgramPayDate === $scope.today && $scope.amadeus[i].StatusId === 3) {
          $scope.users.push($scope.amadeus[i]);
          //console.log($scope.viroba);
        }
      };
      //console.log($scope.amadeus);
    });
}

Вы можете использовать ngRepeat для перебора массива users, который вы заполнили в своем контроллере. https://docs.angularjs.org/api/ng/directive/ngRepeat

<table align="center">
    <thead>
    <tr>
        <th>Id</th>
        <th>Name</th>
        <th>Nickname</th>
    </tr>
    </thead>
    <tbody>
        <tr ng-repeat="user in users">
            <th>{{user.id}}</th>
            <th>{{user.name}}</th>
            <th>{{user.nickname}}</th>
        </tr>    
    </tbody>
</table>
1
Nandu Kalidindi 27 Ноя 2017 в 08:27