特に$ 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配列を使って取得したものだけを取得すべきです(SHOULD)。
app.service("trips", function (tripsApi, $filter) {
var self = this;
this.user = {
trips: Array()
};
this.trips = Array();
this.getUserTrips = function() {
self.getAllTrips.then(function() {
tripsApi.userTrips.success(function (response) {
self.user.trips = $filter('filter')
(self.trips, self.containsChild(id, response));
});
});
};
this.getAllTrips = tripsApi.allTrips.success(function (response) {
self.trips = response;
});
this.containsChild = function (id, idsArray) {
if (id != 0 && idsArray != null) {
for (var i = 0; i < idsArray.length(); i++) {
if (idsArray[i] == i)
return true;
return false;
}
}
}
});
しかし、私はそれを動作させることはできません。最初のエラーは、self.containsChild(id、response)で定義されていないIDです。
ここで間違いはありますか?助けを歓迎します:)
ラムダ構文()=> {} ... tripsApi.userTrips.success((response)=> {})を使用します。 ...通常の機能の代わりに...これが役立つかどうかを確認する – Ajay