Как пройти через сложный объект JSON - PullRequest
0 голосов
/ 18 мая 2018

Я получаю сложный объект JSON со стороны сервера.Я понятия не имею, как пройти через такой объект.Вот объект.

"message": {
        "name": ["Name cannot be blank."],
        "contact_person": ["Contact Person cannot be blank."],
        "username": ["Username cannot be blank."]
    },

Я использую angularjs и ng-repeat для итерации.

<div style="color: red;" ng-repeat="err in message">{{err}}</div>

где сообщение.$scope.message=justdata.message и вот что я получаю:

enter image description here



Как правильно отформатировать.Пожалуйста, помогите мне!

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Попробуйте это: -

<div style="color: red;" ng-repeat="err in message">{{err[0]}}</div>
0 голосов
/ 18 мая 2018

Для меня это нормально, вам нужно иметь вложенный ng-repeat внутри div, потому что ваше сообщение об ошибке появляется в списке.Вы должны снова пройти через это.Например:

 <div style="color: red;" ng-repeat="err in message">
      <span ng-repeat="val in err">
        {{val}}
      </span>
    </div>

Вот рабочий код

<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">

<div style="color: red;" ng-repeat="err in message">
  <span ng-repeat="val in err">
    {{val}}
  </span>
</div>
</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.message =  {
        "name": ["Name cannot be blank."],
        "contact_person": ["Contact Person cannot be blank."],
        "username": ["Username cannot be blank."]
    };
});
</script>

</body>
</html>
0 голосов
/ 18 мая 2018

Учитывая, что вы, похоже, хотите вывести список сообщений об ошибках, я бы предварительно обработал $scope.message, чтобы он был просто массивом строк.Что-то вроде этого должно сработать:

var payload = {
  "message": {
    "name": ["Name cannot be blank."],
    "contact_person": ["Contact Person cannot be blank."],
    "username": ["Username cannot be blank."]
  }
};

$scope.errors = [].concat.apply([], Object.values(payload.message));

Это заполнит $scope.errors массивом сообщений об ошибках, которые затем можно будет выполнить с помощью ng-repeat.

...