Я создаю приложение Angular 1.5 с использованием структуры компонентов. После того, как обещание вернется из вызова $ http в службе, я пытаюсь вызвать другую функцию для фильтрации набора данных, прежде чем он будет отображаться в пользовательском интерфейсе.
Однако функция filterApps не вызывается.
Также... в функции filterApps я пытаюсь сравнить с массивами объектов и возвращать те, которые имеют одинаковое имя. Это лучший способ сделать это или есть более чистый способ?
Контроллер:
import allApps from '../../resources/data/application_data.js';
class HomeController {
/*@ngInject*/
constructor(ItemsService) {
this.itemsService = ItemsService;
this.displayApps = [];
}
$onInit() {
this.itemsService
.getItems()
.success((apps) => this.filterApps(apps));
}
filterApps(siteApps) {
this.displayApps = allApps.applications.filter((app) => {
siteApps.applications.map((siteApp) => {
if(siteApp.name === app.name) {
return app;
}
})
});
}
}
export default HomeController;
Я не вижу причин, по filterApps
метод filterApps
не получает вызов (поскольку вы уже прокомментировали, что функция success
получает вызов). Я думаю, вы просто проверяете, что в переменной displayApps
ничего не было. Реальная проблема заключается в том, что вы не возвращаете результат внутренней функции map
для filter
. Поэтому, почему ничего не получается.
Код
filterApps(siteApps) {
this.displayApps = allApps.applications.filter((app) => {
//returning map function result.
return siteApps.applications.map((siteApp) => {
if(siteApp.name === app.name) {
return app;
}
})
});
}
name
объекта на равенство.
$http
звонков ....error((error) => console.log(error))
? Вы уверены, чтоgetItems
возвращает обещание ... проверьте консоль на наличие ошибок