我有一个从我的控制器调用我的服务的功能。
GridService.getHeaders($scope.grid);
服务低于......
function getHeaders(grid){
var deferred = $q.defer();
$http.put('v1/headers', grid).success(function (data) {
deferred.resolve(data);
}).error(function (data, status, headers, config) {
deferred.reject(data);
});
return deferred.promise;
}
我需要从中获取数据并将其设置为我的控制器中的$ scope变量...
$scope.headers = (Data from getHeader function)
然后将注入此功能。对不起,如果这一切看起来令人困惑......我最初的方式只是设置
$ scope.headers = GridService.getHeaders($ scope.grid);
但是,scope.headers总是返回空。
function getFullHeaders(headers, highlightFilteredHeader){
var returnArray = [];
for(var i = 0; i < headers.length; i++ ){
returnArray.push({
field: headers[i].key,
displayName: headers[i].name,
enablePaginationControls: true,
headerCellClass: highlightFilteredHeader,
enableFiltering: true,
enableSorting: true,
visible: true,
filter: { term: "", }
});
}
return returnArray;
}
答案 0 :(得分:1)
您的getHeaders
方法会返回一个承诺。因此,如果您想对要解决的承诺做出反应,则必须使用.then(fn)
。
尝试:
GridService.getHeaders($scope.grid).then(function(response) {
$scope.headers = response;
});