重新排列 / 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>
感谢您的帮助!
在你的控制器中...
$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>
我是 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>
感谢您的帮助!
在你的控制器中...
$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>