AngularJS 1.4.1 ng-submit 在表单重置后不触发
AngularJS 1.4.1 ng-submit not firing after form reset
我知道有一些与相关主题相关的旧问题,但我没有找到满意的答案,而且这些答案似乎是针对旧版本的 Angularjs。
我的问题是一个带有 angular 验证的表单,提交一次后 ng-submit 不会触发,即使模型数据已重置,表单未被修改并设置为 pristine .
第一次提交后,表单会按预期在视觉上重置,如果第二次使用则正确验证,包括在验证通过时激活提交按钮。比较任何提交之前和重置之后的表单代码会产生相同的 HTML。单击提交会按设计调出预加载器。但是 ng-submit 操作不会触发...
$scope.resetMediaForm = function() {
$scope.uploadMedia = {};
$scope.uploadMedia.from = ''
$scope.uploadMedia.message = ''
$scope.uploadMedia.file = null;
$scope.uploadMedia.fileType = '';
$scope.uploadMedia.fileName = '';
$scope.uploadMedia.done = false;
$scope.uploadMedia.error = '';
if ($scope.mediaForm) {
$scope.mediaForm.$setUntouched();
$scope.mediaForm.$setPristine();
//$('form[name="'+$scope.mediaForm.$name+'"]')[0].reset();
}
};
$scope.resetMediaForm();
$scope.uploadMedia.submit = function() {
var data = {
from: $scope.uploadMedia.from,
message: $scope.uploadMedia.message,
file: $scope.uploadMedia.file,
fileType: $scope.uploadMedia.fileType,
fileName: $scope.uploadMedia.fileName
};
plotRemoteAPI.postMedia(data, function (data, status) {
if (status >= 200 && status < 300) {
if (data.success === true) {
$scope.resetMediaForm();
} else {
$scope.uploadMedia.error = data.error;
}
} else {
$scope.uploadMedia.error = status;
}
}, function (data, status) {
$scope.uploadMedia.error = data.error;
});
};
您在提交处理程序中调用 $scope.resetMediaData();
,这会破坏 $scope.uploadMedia
对象,包括您的提交函数(并且不会重新声明)。我刚刚将 $scope.uploadMedia = {};
移到了 resetMediaData()
函数之外。
我知道有一些与相关主题相关的旧问题,但我没有找到满意的答案,而且这些答案似乎是针对旧版本的 Angularjs。
我的问题是一个带有 angular 验证的表单,提交一次后 ng-submit 不会触发,即使模型数据已重置,表单未被修改并设置为 pristine .
第一次提交后,表单会按预期在视觉上重置,如果第二次使用则正确验证,包括在验证通过时激活提交按钮。比较任何提交之前和重置之后的表单代码会产生相同的 HTML。单击提交会按设计调出预加载器。但是 ng-submit 操作不会触发...
$scope.resetMediaForm = function() {
$scope.uploadMedia = {};
$scope.uploadMedia.from = ''
$scope.uploadMedia.message = ''
$scope.uploadMedia.file = null;
$scope.uploadMedia.fileType = '';
$scope.uploadMedia.fileName = '';
$scope.uploadMedia.done = false;
$scope.uploadMedia.error = '';
if ($scope.mediaForm) {
$scope.mediaForm.$setUntouched();
$scope.mediaForm.$setPristine();
//$('form[name="'+$scope.mediaForm.$name+'"]')[0].reset();
}
};
$scope.resetMediaForm();
$scope.uploadMedia.submit = function() {
var data = {
from: $scope.uploadMedia.from,
message: $scope.uploadMedia.message,
file: $scope.uploadMedia.file,
fileType: $scope.uploadMedia.fileType,
fileName: $scope.uploadMedia.fileName
};
plotRemoteAPI.postMedia(data, function (data, status) {
if (status >= 200 && status < 300) {
if (data.success === true) {
$scope.resetMediaForm();
} else {
$scope.uploadMedia.error = data.error;
}
} else {
$scope.uploadMedia.error = status;
}
}, function (data, status) {
$scope.uploadMedia.error = data.error;
});
};
您在提交处理程序中调用 $scope.resetMediaData();
,这会破坏 $scope.uploadMedia
对象,包括您的提交函数(并且不会重新声明)。我刚刚将 $scope.uploadMedia = {};
移到了 resetMediaData()
函数之外。