2016-05-18 3 views
1

ng-adminとangularjsの新機能です。私はng-adminと管理パネルのループバックを統合しようとしています。ループバックAPIでng-adminフィルタを使用する方法

ループバックで動作するng-filtersフィルタを取得できません。このため、reference_listと他のフィルタが正しく動作していないと思います。

問題は、私は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; 
} 

答えて

0

ここでは、ループバックを使用してページング、ソート、フィルタリングを処理するためのインターセプタ全体を示します。誰かの時間を節約したいと思っています。 '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 }; 
    }); 
}]); 
関連する問題