我目前正在使用AngularJS和使用SlimPHP的耗材API进行Web应用程序。
当我注册用户时,我需要使用GET方法执行检查。根据此方法返回,我应该运行$event.preventDefault()
或不运行。
AngularJS的代码如下:
$scope.checkEmails = function(e){
var req = $http.get(url + 'adv/register/check?email=' + $scope.email).then(function(response){
if(response.data === true) {
e.preventDefault()
}
})
}
HTML按钮是这样的:
<button type="submit" class="btn btn-alt-success" ng-click="checkEmails($event)">
问题在于,当我尝试在$ http调用内执行e.preventDefault()
,时,对象$ event未定义。
所以,我如何在$ http call 中传递此对象,或如何从其范围之外的$ http调用获取值以在外面进行检查电话。
谢谢!
答案 0 :(得分:0)
试试这个
$scope.checkEmails = function(e){
var req = $http.get(url + 'adv/register/check?email=' + $scope.email).then(function(response){
if(response.data === true) {
$scope.submitForm =false;
} else{
$scope.submitForm = true;
}
})
像这样添加ng-submit
<form ng-submit=“submitForm && submit()”>
答案 1 :(得分:0)
您的设置将永远不会有效,因为表单是在$http
请求解决之前提交的。带type="submit"
的按钮会立即提交其推荐表格;由于JS异步性质,延迟preventDefault()
没有效果。因此,请避免通过提交按钮提交表单,而是通过代码执行。在简单的JS中有多种方式:
document.getElementById('formId').submit()
即:
<button type="button" class="btn btn-alt-success" ng-click="checkEmails()">
^^^^^^^^^^^^^
$scope.checkEmails = function(e) {
$http.get(url + 'adv/register/check?email=' + $scope.email).then(function(response){
if (response.data !== true) {
document.getElementById('formId').submit()
}
})
}