【发布时间】:2013-11-11 10:55:28
【问题描述】:
我有一个表单,提交时会在 WelcomeController 中调用“ng-submit="submit()”函数。
在这里我发出一个 ajax 请求并检查是否有一个状态等于成功。 ajax 调用完成后,数据库中的状态可能不会更新。所以我设置了一个 settimeout 来调用,每 6 秒一次又一次地发出 ajax 请求,直到我们获得成功的状态。我想要的是在这段检查时间内加载另一个模板。
这是代码。
app.controller('WelcomeController', function($http,$scope,$location){
$scope.email="abcd@test.com";
$scope.submit = function(){
//some way to set a new template
$http({
method: "POST",
url: 'check',
data: {email: $scope.email},
}).success(function(data){
if(data=="mailreceived"){
//redirect to another page
window.location.assign("./score");
}else{
//rcheck again if the status is set
setTimeout( $scope.submit, 6000 );
return false;
}
});
}
})
【问题讨论】:
-
逻辑似乎很模糊......为什么第一个请求不会返回您的成功消息?似乎您希望在
error回调中重新提交。如果用户离线但是连续循环如果在error回调中使用它将无限期地继续 -
我已将其从成功更改为收到邮件,基本上该应用程序正在尝试检查是否收到了带有发布电子邮件 ID 的邮件。有时邮件可能会延迟。因此,我们不是要求用户重新发布它,而是使用 settimeout 进行操作,并且在重新检查期间我必须显示另一个模板。