如何将$ http true函数值返回到filter函数

时间:2016-06-20 08:37:44

标签: angularjs

我是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;
                });
            }
          };
    })

上面的函数返回{}如何使这个工作? 我在uiGrid cellDropDown中使用过滤器,如

$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'
                             },
                            ]
            };

1 个答案:

答案 0 :(得分:0)

$http会返回promise无数据。

理想情况下,.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;
});