在承诺

时间:2016-08-12 19:55:54

标签: javascript angularjs

我正在使用组件结构构建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;

1 个答案:

答案 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;
            }
        })
    });
}