我正在使用组件结构构建Angular 1.5应用程序。承诺从服务中的$ http调用返回后,我试图调用另一个函数来过滤数据集,然后再在UI上显示。
但是,不会调用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;
答案 0 :(得分:1)
我没有看到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;
}
})
});
}