我正在处理一个项目,其中有一个页面有一个名为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