У меня есть этот код в моем контроллере (я делаю нг-повтор в представлении):Restangular ResponseInterceptor для загрузки состояния выдает ошибку
$scope.projects = Restangular.all('projects').getList().$object;
И тогда у меня есть этот объект, который получит года вернулся из mongolab API
[
{
_id: { "$oid" : "546a3bdee4b0bfd97138fe08"},
"picture" : "http://placehold.it/400x400" ,
"name" : "Square Campus" ,
"address" : "293 Grafton Street, Shasta, Arizona, 6757" ,
"phone" : "+1 (916) 544-2274" ,
"buildings" : [
{ "name" : "North Campus" , "floors" : "4" , "users" : "8"} ,
{ "name" : "South Campus" , "floors" : "2" , "users" : "15"} ,
{ "name" : "East Wing" , "floors" : "8" , "users" : "23"}
]
},
{
... // Other project
},
{
... // Other project
}
]
Теперь, это работает отлично сам по себе, я могу получить й e для отображения в представлении. Но я пытаюсь добавить RequestInterceptor и ResponseInterceptor, чтобы добавить загрузчик загрузки при загрузке данных.
Добавление этого:
RestangularProvider.addRequestInterceptor(function() {
console.log('loading data');
});
RestangularProvider.addResponseInterceptor(function() {
console.log('loaded data');
});
Вызывает следующую ошибку:
Error: Response for getList SHOULD be an array and not an object or something else
У меня аналогичная проблема на странице подробно, когда я пытаюсь получить доступ к зданий:
var detailProject = Restangular.one('projects', $routeParams.projectId);
detailProject.get().then(function (project) {
$scope.project = project;
project.buildingTotals = _.reduce(project.buildings,
function (sums, building) {
return {
floors: sums.floors + parseInt(building.floors),
};
},
{ floors: 0 }
);
});
API Возврат:
{
"_id" : { "$oid" : "546a3bdee4b0bfd97138fe08"} ,
"picture" : "http://placehold.it/400x400" ,
"name" : "Square Campus" ,
"address" : "293 Grafton Street, Shasta, Arizona, 6757" ,
"phone" : "+1 (916) 544-2274" ,
"buildings" : [
{ "name" : "North Campus" , "floors" : "4" , "users" : "8"} ,
{ "name" : "South Campus" , "floors" : "2" , "users" : "15"} ,
{ "name" : "East Wing" , "floors" : "8" , "users" : "23"}
]
}
дает следующее сообщение об ошибке:
TypeError: Cannot read property 'buildings' of undefined
Пожалуйста обратите внимание, что этого не происходит, если ResponseInterceptor отсутствует в конфиге.
Есть ли что-то, что я делаю неправильно? Я думаю, что я указываю, что каждое возвращение должно быть объектом?
Спасибо так много ... забыл прочитать: «Это функция, которая должна возвращать элемент для запроса " – eHx