【发布时间】:2023-03-12 21:30:02
【问题描述】:
我一直在学习角度,特别是 $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 数组进行过的旅行。
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
错误在哪里?欢迎任何帮助:)
【问题讨论】:
-
使用 lambda 语法 () => {}... tripsApi.userTrips.success( (response) => {});而不是正常功能...看看这是否有帮助
标签: javascript angularjs json service filter