簡體   English   中英

控制器中的Angular函數在promise之后未調用

[英]Angular function in controller not getting called after promise

我正在使用組件結構構建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;
            }
        })
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM