我是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'
},
]
};
答案 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;
});