新手在這裏。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「]}}' 這就是我得到的迴應。 –