2016-06-22 3 views
0

특히 $ filter ('filter') 함수를 배우는 각도에 익숙해졌고 로컬 함수를 필터 함수로 전달하는 법을 배웠습니다.

API (json 파일)는 trips.json의 모든 여행과 사용자가 user.trips.json에 있었던 모든 여행의 ID 배열을 포함합니다.

데이터를 가져 오는 받고 공장은 다음과 같습니다 : 코드의

app.factory("tripsApi", function ($http) { 
    return { 
    allTrips: $http.get('/api/trips.json') 
     .success(function (response) { 
     return response; 
     }) 
     .error(function (error) { 
     return error; 
     }), 
    userTrips: $http.get('api/user.trips.json') 
     .success(function (response) { 
     return response; 
     }) 
     .error(function (error) { 
     return error; 
     }) 
    } 
}); 

다음 작품은 모든 사용자가 정보를 여행 검색하기 위해 단지 서비스입니다. 이 서비스는 팩토리를 사용하여 API에 액세스합니다 (이 경우에는 men json 파일). 그리고 여행 정보를 통해 필터해야만 사용자가 id 배열을 사용하여 검색 한 정보 만 검색해야합니다.

아직 작동하지 않습니다. 첫 번째 오류는 self.containsChild (id, response)에 정의되지 않은 ID입니다.

어디에서 실수가 있습니까? 도움을 환영합니다 :)

+0

람다 구문() => {} ... tripsApi.userTrips.success ((response) => {})를 사용하십시오. 정상적인 기능 대신 ...이 도움이되는지보기 – Ajay

답변

1

는 ID 문제, 호출은 다음과 같아야합니다

$filter('filter')(self.trips, self.containsChild); // this won’t really work, though, because your `containsChild` function is not properly defined. 

둘째, 이것은 제대로 정의 된 서비스가 아닙니다. 당신은 세 개의 매개 변수를 적용하려면 containsChild 기능을 수정, 다음

app.service('ServiceName', [ '$filter', function ($filter) { 
    var myInstance = {}; 
    myInstance.containsChild = function (value, index, array) { 
    }; 
    myInstance.user = . . .; 
    return myInstance; 
}]); 

셋째처럼 보이는 무언가를 원한다. 첫 번째 값은 전달 된 값이되고 두 번째 값은 인덱스가되고 세 번째 값은 필터링되는 배열이됩니다.

+0

구문을 살펴본 후 고마워 그것이 어떻게 작동하는지 내 마음을 맑게했다. :) – MattJ

1

아직 작동하지 않습니다. 내가 할 첫 번째 오류는 ID가 실수가있는 self.containsChild(id, response);

을 정의되지 입니까?

당신은 어디 오류의 원인이 무엇 인가 제공 한 코드를 선언에는 id 변수가 없습니다 함수에 id을 통과하지만.

또한, 나는 코드에 일관성이 없다는 것을 발견했습니다 당신은 selfthis을 할당하지만 당신은 당신의 코드에서 사방 thisself을 계속 사용.