2016-01-23 4 views
2

Я новичок в Angular и нуждаюсь в вашей помощи. С моей командой мы создали API REST PHP в Symfony, который мы хотим подключить к Угловому клиенту.Restangular/Json-ld | Я могу получить данные, но я не могу показать их

У меня уже есть Угловое приложение. Я могу видеть в своих запросах XHR, что я действительно получаю объекты и их свойства (пользователей).

Но, на мой взгляд, я пробовал {{user.name}} с ng-repeat, но ничего не показывал.

Данные отправляются в 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

Спасибо за помощь!

+0

нет объекта с именем не МАССЫ на $ объеме, если нет опечатки. –

ответ

0

в контроллере ...

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

, если это не работает ...

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

}).catch(function(error) { 

    console.log(error); 
}) 
+0

это сработало! Я не могу поверить, что это не было ни в одной из Restangular, Api-platform ok Jsonld docs, но спасибо человеку :) –

0

Хорошо, теперь у меня есть еще один вопрос. У меня есть все мои «ами» и их свойства, так что это действительно здорово, но у моих «ами» есть много «телефонных» идентификаторов.

Что я пытаюсь сделать, так это иметь «ami» «numero» с «телефона» с этим идентификатором телефона.

Я могу перечислить все мои «амисы» с идентификатором телефона в нем и всеми моими «телефонами» с цифрами в нем.

Благодаря angain :)

+0

ну, я нашел один. Я попытаюсь показать код –

1

я нашел сам, вот код:

<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> 
+0

Приятно, что вы его нашли. – NoX

Смежные вопросы