重新排列 / Json-ld |我可以获取数据,但我无法显示它们

Restangular / Json-ld | I can get the data, but I can't show them

我是 Angular 的新人,需要您的帮助。 与我的团队一起,我们在 Symfony 中创建了一个 PHP REST API,我们希望连接到一个 Angular 客户端。

我已经有了 Angular 应用程序.. 我可以在我的 XHR 请求中看到我实际上获得了实体及其属性(用户)。

但在我看来,我用 ng-repeat 尝试了一些 {{ user.name }} 但它没有显示任何内容。

数据在 Json-ld 中发送,我们使用 Restangular 读取它们。

这里是一些代码: app.js :

    angular
  .module('frontApp', [
    'ngAnimate',
    'ngCookies',
    'ngResource',
    'ngRoute',
    'ngSanitize',
    'ngTouch',
    'restangular'
  ])
  .config(function ($routeProvider) {
      $routeProvider
          .when('/', {
            templateUrl: 'views/main.html',
            controller: 'MainCtrl'
          })
          .when('/about', {
            templateUrl: 'views/about.html',
            controller: 'AboutCtrl'
          })
          .otherwise({
            redirectTo: '/'
          });
    })
    .config(['RestangularProvider', function (RestangularProvider) {
      // The URL of the API endpoint
      RestangularProvider.setBaseUrl('http://localhost:8000');

      // JSON-LD @id support
      RestangularProvider.setRestangularFields({
        id: '@id'
      });
      RestangularProvider.setSelfLinkAbsoluteUrl(false);

      RestangularProvider.setResponseExtractor(function(response) {
        var newResponse = response;
        if (angular.isArray(response)) {
          angular.forEach(newResponse, function(value, key) {
            newResponse[key].originalElement = angular.copy(value);
          });
        } else {
          newResponse.originalElement = angular.copy(response);
        }

        return newResponse;
      });

      // Hydra collections support
      RestangularProvider.addResponseInterceptor(function (data, operation) {
        // Remove trailing slash to make Restangular working
        function populateHref(data) {
          if (data['@id']) {
            data.href = data['@id'].substring(1);
          }
        }

        // Populate href property for the collection
        populateHref(data);

        if ('getList' === operation) {
          var collectionResponse = data['hydra:member'];
          collectionResponse.metadata = {};

          // Put metadata in a property of the collection
          angular.forEach(data, function (value, key) {
            if ('hydra:member' !== key) {
              collectionResponse.metadata[key] = value;
            }
          });

          // Populate href property for all elements of the collection
          angular.forEach(collectionResponse, function (value) {
            populateHref(value);
          });

          return collectionResponse;
        }

        return data;
      });
    }])
;

main.js :

angular.module('frontApp')
.controller('MainCtrl', function ($scope, Restangular) {

    $scope.ami1 = Restangular.one('amis',1).get();
    $scope.test ='Test';

    var amis = Restangular.all('amis');

      amis.getList().then(function (ami) {
          $scope.ami = ami;
      });
});

main.html:

<div class="jumbotron">
<p>Liste d'amis :</p>
{{ ami1.nom }}
{{ test }}
<div ng-repeat="ami in amis" id="{{ ami['@id'] }}" class="row marketing">
    <h1>{{ ami.nom }}</h1>
    <h2>{{ ami.prenom }}</h2>
    <h3>{{ ami.id }}</h3>
</div>

chrome console

感谢您的帮助!

在你的控制器中...

$scope.amis = Restangular.all('amis').getList();

如果这不起作用...

Restangular.all('amis').getList().then(function(response) {
    $scope.amis=response;

}).catch(function(error) {

   console.log(error);
})

好的,现在我有另一个问题。 我拥有我所有的 'ami' 和它们的属性,所以它真的很棒,但是我的 'ami' 里面有很多 'telephone' 个 ID。

我想做的是让 'telephone' 的 'ami' 'numero' 使用这个电话号码。

我可以列出我所有的 'amis' 和电话号码,以及我所有的 'telephones' 和号码。

再次感谢 :)

我自己找的,代码如下:

    <div ng-repeat="ami in amis" id="{{ ami['@id'] }}" class="row marketing">
    <h1>Nom: {{ ami.nom }}</h1>
    <h2>Prenom: {{ ami.prenom }}</h2>
    <h3>Date de naissance: {{ ami.dateNaissance }}</h3>

    <h4>Telephone(s): </h4>
    <div ng-repeat="telephone in ami.telephones" id="{{ telephone['@id'] }}">
        {{ telephones[$index].numero }}
    </div>

</div>