2016-08-12 2 views
0

구성 요소 구조를 사용하여 Angular 1.5 앱을 구축 중입니다. 약속이 서비스의 $ http 호출에서 돌아온 후에 UI에 표시되기 전에 다른 함수를 호출하여 데이터 집합을 필터링하려고합니다.컨트롤러의 각도 함수가 약속 이후에 호출되지 않음

그러나 filterApps 함수가 호출되지 않습니다.

또한 ... filterApps 함수에서 객체의 배열과 비교하고 같은 이름을 가진 객체를 반환하려고합니다. 이것은 이것에 대해 갈 수있는 가장 좋은 방법입니까, 아니면 더 깨끗한 방법입니까?

컨트롤러 : (이미 success 함수가 호출지고 논평으로)

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

나는 어떤'$ http' 전화 ... –

+2

그것이 정말 성공 콜백에 들어가 있는가하면, 추가 시도 '에는 .error ((오류) => CONSOLE.LOG 표시되지 않습니다 (오류))'? 'getItems'가 약속을 반환합니까? 오류 확인 콘솔도 확인하십시오 –

+0

@DannyBuonocore $ http 호출이 질문과 아무 관련이없는 서비스에 있습니다. – erichardson30

답변

1

내가 filterApps 방법은 호출에 geting되지 않는다는 것을 어떤 이유가 표시되지 않습니다. 그냥 변수가 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; 
      } 
     }) 
    }); 
} 
+0

고맙습니다. 나는 그 재림을 놓쳤다. 또한 배열 비교를 수행하는 더 좋은 방법이 있습니까? – erichardson30

+1

@ erichardson30 그것은 나에게 맞는 것 같다. 당신이 평등을위한 객체의'name'을 비교하는 것처럼. –

관련 문제