我正在處理一個項目,其中有一個頁面有一個名爲balance的輸入字段,並且包含這個字段的div是balanceDiv.for admin這個字段不會show.so我使用ng-顯示隱藏/顯示div,在角度控制器中編寫函數(一個用於收集loginId,另一個用於隱藏或根據登錄ID顯示div)。顯示或隱藏div的條件是---如果admin found(id 1)DIV將隱藏否則DIV將show.To做,我通知,要求ajax--執行切換到第二功能。在的時候,我的角度controller--當ajax調用時執行另一個函數的原因
init();
function init()
{
setLoginId();
showHide();
initilize();
}
你可以看到,首先它會執行setLoginId然後它會去showHide(如我所料) unctions ---
function setLoginId()
{
var apiRoute = baseUrl + '/api/AmountDists/GetLoginId/';
var result = CrudService.getAll(apiRoute);
result.then(function (response) {
debugger
$scope.loginId = response.data;
},
function (error) {
console.log("Error: " + error);
});
}
function showHide() {
if ($scope.loginId == 1) {
$scope.balanceDiv = false;
}
else {
$scope.balanceDiv = true;
}
}
我所注意到的是,它在執行後,在setLoginId方法Ajax調用時沒有得到響應(或completting的方法),它也適用於顯示隱藏method.After完成顯示隱藏方法,它再次在setLoginId方法中返回。然後執行方法指令的其餘部分。結果是,我在showHide方法中獲取了$ scope.loginId的未定義值。
我想知道爲什麼會發生這種情況?爲什麼執行切換到另一個方法時,Ajax調用?
答案很簡單,AJAX是異步的。考慮一個基本的例子,你在移動2G或壞3G上瀏覽頁面,如果我們做同步處理,用戶將不得不等待響應,頁面將凍結,直到它。你想要那種行爲嗎? – Rajesh
可能的重複[異步在Ajax中意味着什麼?](http://stackoverflow.com/questions/3393751/what-does-asynchronous-means-in-ajax) – Rajesh