2016-06-20 13 views
1

をフィルタリングするために$ HTTP真の関数値を返すために、私はangularjsに新しいですし、私はちょうど機能をフィルタリングするために$ HTTPサービスの値を返すようにしたいので、以下はコードです....どのように機能

上記
.filter('mapMedicine', function($http) { 
      return function(input) { 
      if (!input){ 
       return ''; 
      } else { 
       return $http.get('/rest-apis/medicines/'+input).then(function(response){ 
        return response.data.name; 
       }); 
      } 
      }; 
    }) 

関数は{}を返します。 と私はpromiseないデータを返す$http

$scope.bindGrid1={ 
       enablePagination:false, 
       enableFiltering: true, 
       useExternalSorting: true, 
       enablePaginationControls: false, 
       columnDefs: [ 
          {field: 'medicine', displayName: 'Medicine/Test', width: '20%', 
           cellFilter:"mapMedicine", 
           editableCellTemplate: 'ui-grid/dropdownEditor', 
           editDropdownIdLabel: 'id', 
           editDropdownValueLabel: 'name' 
          }, 
          ] 
      }; 
+0

をどのようにあなたがそれを呼び出す/使用していますか? –

+0

をuiGrid with columnDef cellFilterドロップダウン – Navjyot

+0

ここでは、フィルタを正しく追加する方法の例です。 http://stackoverflow.com/questions/25842194/angularjs-load-html-entity-as-currency-symbol-from-scope/25842874#25842874 「ng-bind-html 'angle属性 –

答えて

0

ようuiGrid cellDropDownにフィルタを使用しています。

理想的には、.filterはになりません。は、任意のAPIを非同期にアクセスする必要があります。これはサービスの仕事です。

.service('mapMedicineService', ['$http', function($http) { 
    this.getMapMedecine = function(input) { 
     var map = $http.get('API'+input).then(function(response) { 
      return response.data; 
     }); 
     return map; 
    } 
}]); 

次にあなたが望むどこからでもデータを取得し、あなたのグリッドにそれを渡すことができます:

mapMedecineService.getMapMedecine('123').then(function(result) { 
    $scope.myData = result; 
}); 
関連する問題