新手在这里。AngularJS - 正确格式化异步调用
我想明白,我怎么需要我的控制器内的结构异步调用,以适应我的具体使用情况:
考虑从一个角模块下面的代码片段在我的项目中“service.js”:
function getSearchObjects(projectName, title) {
var payload = JSON.stringify({
"title": title
});
var request = $http({
method: 'post',
url: URL + '/search/' + projectName,
data: payload
});
return request.then(handleSuccess, handleError);
};
function runQuery(projectName, fromDate, toDate, sort, direction, columns) {
var from = Date.parse(fromDate);
var to = Date.parse(toDate);
var payload = JSON.stringify({
"fromDate": from,
"toDate": to,
"sort": sort,
"direction": direction,
"columns": columns
});
console.log(payload);
var request = $http({
method: 'post',
url: URL + '/query/' + projectName,
data: payload
});
return request.then(handleSuccess, handleError);
}
function handleSuccess(response) {
return response.data;
};
function handleError(response) {
if (!angular.isObject(response.data) || !response.data.error) {
return($q.reject("An unknown error occurred."));
}
return $q.reject(response.data.error);
};
});
在我的控制,我想解决以下功能:
$scope.submit = function() {
var objectProperties = exportsStorageService.getSearchObjects($scope.selected.project.name, $scope.selected.search)
.then(function(result) {
exportsStorageService.runQuery($scope.selected.project.name, $scope.selected.start_date, $scope.selected.end_date, objectProperties.sort, objectProperties.direction, objectProperties.columns)
},
function(error) {
console.log(error);
});
};
getSearchObjects标题匹配($ SC ope.selected.search)在我的UI中选择和API调用抓住以下更详细的对象:
{ title: 'Duplication Example',
sort: '#_traac-timestamp',
direction: 'desc',
columns: [ '#_traac-remote_ip', 'c-platform-m-distinct-id_s', '_type' ] }
我试图抓住性质从getSearchObjects回来,有一些用户沿着他们通过从选择的值我的用户界面runQuery,然后从数据库返回数据给用户,但当我检查传递给runQuery使用我的控制器上述逻辑的值,我得到以下值。所有objectProperties值我试图传递给runQuery的是不确定的:
project_name: "Example Project"
start_date: 1499770800000
end_date: 1499943600000
sort: undefined
direction: undefined
columns: undefined
我一直在试图调试这一点,但我太新,采用了棱角分明和异步调用真正了解我在做什么错。目前我最好的猜测是,我在从getSearchObjects检索到的值附加到objectProperties之前调用runQuery。无论是我还是我错误地引用了objectProperties变量中的属性。
有人可以帮我解决这个问题,并且更好地理解我做错了什么吗?
非常感谢您的帮助!
谢谢你的见解。我尝试了你提出的解决方案,但是三个结果属性仍然回来undefined :(其他想法?我一直在这一整个下午难住... –
@JoeyMarinello你从getSearchObjects返回的请求是什么?如果您不确定如何调试,请在Chrome开发者工具的“网络”标签中输入。 – tiagodws
'{“objectMatch”:{“title”:“doc-event”,“sort”:“#_ traac-timestamp”方向“:”desc“,”列“:[”m-doc-name_s“,”m-user_s“,”m-full-action-type_s“,”m-event-action-descriptor_s“]}}' 这就是我得到的回应。 –