我是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>
感谢您的帮助!
答案 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>
答案 1 :(得分:0)
在您的控制器中......
$scope.amis = Restangular.all('amis').getList();
如果不起作用......
Restangular.all('amis').getList().then(function(response) {
$scope.amis=response;
}).catch(function(error) {
console.log(error);
})
答案 2 :(得分:0)
好的,现在我有另一个问题。 我有我所有的“ami&#39;和他们的属性,所以它真的很棒,但我和他妈的#am;有很多电话&#39; ids。
我尝试做的是让我的'ami&#39; &#39; NUMERO&#39;来自&#39;电话&#39;用这个电话号码。
我可以列出我所有的'amis&#39;电话号码,以及我的所有电话&#39;与numeros在其中。
感谢angain:)