控制器中的Angular函数在承诺之后没有被调用



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

相关内容

最新更新