как заставить фильтры ng-admin работать с loopback API

Я новичок в ng-admin и angularjs. Я пытаюсь интегрировать ng-admin с loopback для панели администратора.

Я не могу заставить фильтры ng-filters работать с петлей из-за этого, я думаю, что reference_list и другой фильтр не работают должным образом.

Проблема в том, что я не могу включить фильтр where в свой запрос к API, я пытаюсь сделать это с помощью restangular

ниже код

// custom filters
if (params._filters) {
    for (var filter in params._filters) {
        params['filter[where]'] = "{" + entry.field + ":"  + rams._filters[filter] + "}";
    }
    delete params._filters;
}

person ashish kumar    schedule 18.05.2016    source источник


Ответы (2)


для фильтра «где» может быть что-то вроде этого:

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];
    }
  }
}
person anonymous    schedule 31.05.2016

Вот весь мой перехватчик для обработки пейджинга, сортировки и фильтрации с обратной связью. Надеюсь, это сэкономит кому-то время. Обратите внимание, что фильтры для реляционных полей, оканчивающихся на «id», обрабатываются с использованием равенства, тогда как фильтры для других полей используют «подобно».

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 };
    });
}]);
person vipes    schedule 26.01.2017