我是ng-admin和angularjs的新手。我正在尝试将ng管理与管理面板的环回集成。
我无法使ng筛选器筛选器与环回一起工作因此,我认为referencelist和其他过滤器不能正常工作。
问题是我无法在对api的请求中包含where
过滤器我正在尝试使用restangular
下面是代码
// custom filters
if (params._filters) {
for (var filter in params._filters) {
params['filter[where]'] = "{" + entry.field + ":" + rams._filters[filter] + "}";
}
delete params._filters;
}
对于"where"过滤器可以是这样的:
for(var entry in params._filters) {
if (params._filters[entry] !== undefined) {
if (params._filters[entry].constructor === Array && params._filters[entry].length > 1) { // where value in array of values
params['filter[where][' + entry + '][inq]'] = params._filters[entry];
}
else { // where entry = value
params['filter[where][' + entry + ']'] = params._filters[entry];
}
}
}
这是我的整个拦截器,用于使用环回处理分页、排序和过滤。希望这能节省一些时间。请注意,以"id"结尾的关系字段上的筛选器使用相等处理,而其他字段上的过滤器使用"like"。
myApp.config(['RestangularProvider', function (RestangularProvider) {
RestangularProvider.addFullRequestInterceptor(function(element, operation, what, url, headers, params) {
if (operation == "getList") {
// custom pagination params
if (params._page) {
params["filter[skip]"]= (params._page - 1) * params._perPage;
params["filter[limit]"] = params._perPage;
}
delete params._page;
delete params._perPage;
// custom sort params
if (params._sortField) {
params["filter[order]"] = params._sortField + " " + (params._sortDir || 'ASC');
delete params._sortField;
delete params._sortDir;
}
// custom filters
if (params._filters) {
var filterClause = "";
var i = 0;
for (var filter in params._filters) {
if (filter.endsWith('id')) {
params["filter[where][and][" + i + "][" + filter + "]"] = params._filters[filter];
} else {
params["filter[where][and][" + i + "][" + filter + "][like]"] = '%' + params._filters[filter] + '%';
}
i++;
}
delete params._filters;
}
}
return { params: params };
});
}]);