我正在使用组件结构构建一个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;
我看不出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;
}
})
});
}